国产精品天干天干在线观看,网王:开局大招雷鸣八卦,夫不在的日子被公侵犯,要不要换个地方深入了解一下,晚上睡不着正能量www

電子政務(wù)系統(tǒng)的類(lèi)型:旅游科普教育之Android平臺(tái)實(shí)現(xiàn)內(nèi)網(wǎng)無(wú)紙化會(huì)議|智慧教室|實(shí)時(shí)同屏功能

時(shí)間:2024-11-27 23:31:58企業(yè)流程管理全自動(dòng)進(jìn)銷(xiāo)存管理系統(tǒng)電子檔案管理平臺(tái) 開(kāi)源OA資訊首頁(yè)

的rtmp流播放即可; 5. 教師和學(xué)生互動(dòng):學(xué)生端如需作為示范案例,屏幕數(shù)據(jù)共享給其他同學(xué),只需請(qǐng)求同屏,數(shù)據(jù)反推到rtmp服務(wù)器,其他學(xué)生查看即可。 6. 擴(kuò)展監(jiān)控:如果需要更進(jìn)一步的技術(shù)方案,如教師端想監(jiān)控學(xué)生端的屏幕情況,可以有兩種方案,如學(xué)生端直接推rtmp過(guò)來(lái),或者,學(xué)生端啟動(dòng)內(nèi)置rtsp服務(wù),教師端想看的時(shí)候,隨時(shí)看即可(亦可輪詢(xún)播放)。 android端對(duì)接 推送分辨率如何設(shè)定或縮放? android設(shè)備,特別是高分屏,拿到的視頻原始寬高非


r語(yǔ)言-中國(guó)各城市pm2.5數(shù)據(jù)間的相關(guān)分析:

近日,京津冀遭遇“霧霾鎖成”,廊坊、保定、石家莊、邢臺(tái)、邯鄲成為污染最嚴(yán)重地區(qū)。 ? 很多網(wǎng)站提供了pm2.5(細(xì)顆粒物)及空氣質(zhì)量指數(shù)(aqi)的實(shí)時(shí)查詢(xún),比如:pm25.in、北京市環(huán)境檢測(cè)中心等等。 這些網(wǎng)站只是對(duì)數(shù)據(jù)進(jìn)行了展示,有的還做了很漂亮的可視化,但卻沒(méi)有做進(jìn)一步的數(shù)據(jù)分析。舍恩伯格在《大數(shù)據(jù)時(shí)代》一書(shū)中這樣寫(xiě)道:“我們沒(méi)有必要非得知道現(xiàn)象背后的原因,而是要讓數(shù)據(jù)自己發(fā)聲。” 以及“相關(guān)關(guān)系能夠幫助我們更好地了解這個(gè)世界。”他認(rèn)為,建立在相關(guān)關(guān)系分析法上面的預(yù)測(cè)是大數(shù)據(jù)的核心。通過(guò)找到“關(guān)聯(lián)物”并監(jiān)控它,我們就能夠預(yù)測(cè)未來(lái)。 ,which(colnames(pm)天津市),which(colnames(pm)石家莊市)) knitr::kable(summary(pm)) 北京市天津市石家莊市min. : 30.00min

cloudbase cms + next.js:輕松構(gòu)建一個(gè)內(nèi)容豐富的站點(diǎn):

項(xiàng)目背景試想一下,如果你現(xiàn)在要為你自己或者你所在的組織創(chuàng)建一個(gè)強(qiáng)內(nèi)容的站點(diǎn),同時(shí)要求好的 seo(搜素引擎優(yōu)化),比如博客,你會(huì)怎么做呢? 靜態(tài)生成的意思是,在構(gòu)建的過(guò)程中,next.js 就會(huì)自動(dòng)執(zhí)行數(shù)據(jù)拉取的邏輯,并把數(shù)據(jù)和 ui 渲染為一個(gè)個(gè)的靜態(tài) html 頁(yè)面,這意味著,我們的站點(diǎn)將響應(yīng)迅速,而且利于 seo。? 環(huán)境創(chuàng)建完畢后,進(jìn)入擴(kuò)展應(yīng)用模塊,可以看到“cms內(nèi)容管理系統(tǒng)”,可以在這里安裝它。設(shè)置都按照默認(rèn)就可以了,唯一要注意的是,務(wù)必記住自己設(shè)置的管理員賬號(hào)和密碼。 ,index.js 導(dǎo)出的函數(shù)式組件就直接對(duì)應(yīng)著我們進(jìn)入網(wǎng)站后的第一個(gè)頁(yè)面,而其他 js 文件于 .pages 的相對(duì)地址就是 next.js 為其自動(dòng)生成的路由。 可用于云端一體化開(kāi)發(fā)多種端應(yīng)用(小程序,公眾號(hào),web 應(yīng)用,flutter 客戶端等),幫助開(kāi)發(fā)者統(tǒng)一構(gòu)建和管理后端服務(wù)和云資源,避免了應(yīng)用開(kāi)發(fā)過(guò)程中繁瑣的服務(wù)器搭建及運(yùn)維,開(kāi)發(fā)者可以專(zhuān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn)

重磅 | 萬(wàn)維網(wǎng)之父 tim berners-lee 榮獲2016年度圖靈獎(jiǎng):

北京時(shí)間4月4日,美國(guó)計(jì)算機(jī)協(xié)會(huì)(association for computing machinery, 簡(jiǎn)稱(chēng)acm)宣布了 2016 年度圖靈獎(jiǎng)得主:萬(wàn)維網(wǎng)之父、mit 教授tim berners-lee 圖靈獎(jiǎng)由美國(guó)計(jì)算機(jī)協(xié)會(huì)于1966年設(shè)立,專(zhuān)門(mén)獎(jiǎng)勵(lì)那些對(duì)計(jì)算機(jī)事業(yè)作出重要貢獻(xiàn)的個(gè)人。其名稱(chēng)取自計(jì)算機(jī)科學(xué)的先驅(qū)、英國(guó)科學(xué)家艾倫·麥席森·圖靈(alan m. turing)。 圖靈獎(jiǎng)初期獎(jiǎng)金為20萬(wàn)美元,1989年起增到25萬(wàn)美元,獎(jiǎng)金通常由計(jì)算機(jī)界的一些大企業(yè)提供(通過(guò)與acm簽訂協(xié)議)。目前圖靈獎(jiǎng)由google贊助,獎(jiǎng)金為100萬(wàn)美元。 他的成果包括創(chuàng)建網(wǎng)頁(yè)命名方法(uri)、通信協(xié)議(http)和網(wǎng)頁(yè)語(yǔ)言(html)。此外,他用開(kāi)源代碼編寫(xiě)了第一個(gè)瀏覽器。這使得早期的網(wǎng)頁(yè)瀏覽器能推廣到學(xué)術(shù)界以外。“第一個(gè)萬(wàn)維網(wǎng)網(wǎng)站在1991年上線。 “我感到榮幸能收到這個(gè)以計(jì)算機(jī)先鋒命名的獎(jiǎng)項(xiàng)。對(duì)于程序員來(lái)說(shuō),能用計(jì)算機(jī)來(lái)做什么,只能受到自己的限制?!眛im教授表示。

dede模板首頁(yè),如何設(shè)計(jì)與seo?:

從目前來(lái)看,有大量的中小型企業(yè)選擇利用dede模板,建立企業(yè)網(wǎng)站,而在這個(gè)過(guò)程中,一個(gè)非常重要的問(wèn)題就是企業(yè)網(wǎng)站首頁(yè)的設(shè)計(jì)與優(yōu)化。 特別是對(duì)于一些中小型企業(yè),幾乎網(wǎng)站內(nèi)頁(yè)根本不參與排名,所有的核心重點(diǎn)都在首頁(yè)。 44.png 那么,dede模板,企業(yè)首頁(yè)如何設(shè)計(jì)與優(yōu)化? ④適當(dāng)?shù)脑黾与S機(jī)新聞與熱門(mén)新聞版塊,提高網(wǎng)站內(nèi)容更新的頻率。 4、首頁(yè)彈窗 在dede模板中,早期網(wǎng)站運(yùn)營(yíng)人員,最常用的一個(gè)方式就是加入廣告彈窗代碼,主要的用途包括: ①添加網(wǎng)站即時(shí)溝通組件 ②添加seo聯(lián)盟的流量代碼,用于商業(yè)變現(xiàn)。 總結(jié):dede模板首頁(yè)相關(guān)的設(shè)計(jì)與seo,仍然有諸多細(xì)節(jié),而上述內(nèi)容,僅供參考,更多優(yōu)質(zhì)內(nèi)容,盡在seo優(yōu)化課程。

「谷歌」hreflang標(biāo)簽知識(shí)與多國(guó)語(yǔ)言網(wǎng)站seo優(yōu)化:

今天跟各位同學(xué)講解下有關(guān)hreflang標(biāo)簽的知識(shí),如果,你有過(guò)優(yōu)化多語(yǔ)言網(wǎng)站seo的經(jīng)歷,相信對(duì)這個(gè)標(biāo)簽并不陌生。希望,今天分享的內(nèi)容能夠?qū)Ω魑煌瑢W(xué)有所幫助?!?— 及時(shí)當(dāng)勉勵(lì),歲月不待人。 當(dāng)一個(gè)網(wǎng)站采用國(guó)際網(wǎng)站時(shí),最重要的技術(shù)seo元素之一就是hreflang標(biāo)簽。為什么hreflang標(biāo)簽如此重要?hreflang標(biāo)簽可幫助搜索引擎了解您的內(nèi)容的哪個(gè)版本向哪些受眾展示。 例如:瑞典語(yǔ) - 不是se-se,而是sv-se。 對(duì)于電子商務(wù)網(wǎng)站或國(guó)際化平臺(tái),建議將hreflang標(biāo)簽添加到網(wǎng)站的站點(diǎn)地圖中,這樣可以更加實(shí)時(shí)更加方便的讓搜索引擎知道該頁(yè)面的相關(guān)信息。 今天的分頁(yè)seo優(yōu)化技巧知識(shí)就講到這里了。如果,哪位同學(xué)有疑問(wèn)的話,可以添加我個(gè)人微信號(hào):seoiit,一起來(lái)討論下。

電子政務(wù)系統(tǒng)的類(lèi)型:旅游科普教育之a(chǎn)ndroid平臺(tái)實(shí)現(xiàn)內(nèi)網(wǎng)無(wú)紙化會(huì)議|智慧教室|實(shí)時(shí)同屏功能

背景 本文主要講的是基于android平臺(tái)實(shí)現(xiàn)rtmp的技術(shù)方案設(shè)計(jì),基礎(chǔ)架構(gòu)圖如下: 組網(wǎng)注意事項(xiàng) 1. 組網(wǎng):無(wú)線組網(wǎng),需要好的ap模塊才能撐得住大的并發(fā)流量,推送端到ap,最好是有線網(wǎng)鏈接; 2. 服務(wù)器部署:srs或nginx,服務(wù)器可以和windows平臺(tái)的教師機(jī)部署在一臺(tái)機(jī)器; 3. 教師端:如教師有移動(dòng)的pad,可以直接推到rtmp服務(wù)器,然后共享出去; 4. 學(xué)生端:直接拉取服務(wù)端的rtmp流播放即可; 5. 教師和學(xué)生互動(dòng):學(xué)生端如需作為示范案例,屏幕數(shù)據(jù)共享給其他同學(xué),只需請(qǐng)求同屏,數(shù)據(jù)反推到rtmp服務(wù)器,其他學(xué)生查看即可。 6. 擴(kuò)展監(jiān)控:如果需要更進(jìn)一步的技術(shù)方案,如教師端想監(jiān)控學(xué)生端的屏幕情況,可以有兩種方案,如學(xué)生端直接推rtmp過(guò)來(lái),或者,學(xué)生端啟動(dòng)內(nèi)置rtsp服務(wù),教師端想看的時(shí)候,隨時(shí)看即可(亦可輪詢(xún)播放)。 android端對(duì)接 推送分辨率如何設(shè)定或縮放? android設(shè)備,特別是高分屏,拿到的視頻原始寬高非常大,如果推原始分辨率,編碼和上行壓力大,所以,一般建議,適當(dāng)縮放,比如寬高縮放至2/3,縮放一般建議等比例縮放,縮放寬高建議16字節(jié)對(duì)齊。 代碼語(yǔ)言:javascript 復(fù)制 private void createscreenenvironment() { sreenwindowwidth = mwindowmanager.getdefaultdisplay().getwidth(); screenwindowheight = mwindowmanager.getdefaultdisplay().getheight(); log.i(tag, "screenwindowwidth: " + sreenwindowwidth + ",screenwindowheight: " + screenwindowheight); if (sreenwindowwidth > 800) { if (screenresolution == screen_resolution_standard) { scale_rate = scale_rate_half; sreenwindowwidth = align(sreenwindowwidth / 2, 16); screenwindowheight = align(screenwindowheight / 2, 16); } else if(screenresolution == screen_resolution_low) { scale_rate = scale_rate_two_fifths; sreenwindowwidth = align(sreenwindowwidth * 2 / 5, 16); } } log.i(tag, "after adjust mwindowwidth: " + sreenwindowwidth + ", mwindowheight: " + screenwindowheight); int pf = mwindowmanager.getdefaultdisplay().getpixelformat(); log.i(tag, "display format:" + pf); displaymetrics displaymetrics = new displaymetrics(); mwindowmanager.getdefaultdisplay().getmetrics(displaymetrics); mscreendensity = displaymetrics.densitydpi; mimagereader = imagereader.newinstance(sreenwindowwidth, screenwindowheight, 0x1, 6); mmediaprojectionmanager = (mediaprojectionmanager) getsystemservice(context.media_projection_service); } 橫豎屏自動(dòng)適配 橫豎屏狀態(tài)下,采集的屏幕寬高不一樣,如果橫豎屏切換,這個(gè)時(shí)候,需要考慮到橫豎屏適配問(wèn)題,確保比如豎屏狀態(tài)下,切換到橫屏?xí)r,推拉流兩端可以自動(dòng)適配,橫豎屏自動(dòng)適配,編碼器需要重啟,拉流端,需要能自動(dòng)適配寬高變化,自動(dòng)播放。 代碼語(yǔ)言:javascript 復(fù)制 public void onconfigurationchanged(configuration newconfig) { try { super.onconfigurationchanged(newconfig); if (this.getresources().getconfiguration().orientation == configuration.orientation_landscape) { log.i(tag, "onconfigurationchanged cur: landscape"); } else if (this.getresources().getconfiguration().orientation == configuration.orientation_portrait) { log.i(tag, "onconfigurationchanged cur: portrait"); } if(ispushingrtmp || isrecording || isrtsppublisherrunning) { stopscreencapture(); clearallimages(); createscreenenvironment(); setupvirtualdisplay(); } } catch (exception ex) { } } 補(bǔ)幀策略 好多人不理解為什么要補(bǔ)幀,實(shí)際上,屏幕采集的時(shí)候,屏幕不動(dòng)的話,不會(huì)一直有數(shù)據(jù)下去,這個(gè)時(shí)候,比較好的做法是,保存最后一幀數(shù)據(jù),設(shè)定一定的補(bǔ)幀間隔,確保不會(huì)因?yàn)閹g距太大,導(dǎo)致播放端幾秒都收不到數(shù)據(jù),當(dāng)然,如果服務(wù)器可以緩存gop,這個(gè)問(wèn)題迎刃而解。 異常網(wǎng)絡(luò)處理、事件回調(diào)機(jī)制 回答:如果是走rtmp,網(wǎng)絡(luò)抖動(dòng)或者其他網(wǎng)絡(luò)異常,需要有好重連機(jī)制和狀態(tài)回饋機(jī)制。 代碼語(yǔ)言:javascript 復(fù)制 class eventhandev2 implements ntsmarteventcallbackv2 { @override public void onntsmarteventcallbackv2(long handle, int id, long param1, long param2, string param3, string param4, object param5) { log.i(tag, "eventhandev2: handle=" + handle + " id:" + id); string publisher_event = ""; switch (id) { case ntsmarteventid.event_daniulive_erc_publisher_started: publisher_event = "開(kāi)始.."; break; case ntsmarteventid.event_daniulive_erc_publisher_connecting: publisher_event = "連接中.."; break; case ntsmarteventid.event_daniulive_erc_publisher_connection_failed: publisher_event = "連接失敗.."; break; case ntsmarteventid.event_daniulive_erc_publisher_connected: publisher_event = "連接成功.."; break; case ntsmarteventid.event_daniulive_erc_publisher_disconnected: publisher_event = "連接斷開(kāi).."; break; case ntsmarteventid.event_daniulive_erc_publisher_stop: publisher_event = "關(guān)閉.."; break; case ntsmarteventid.event_daniulive_erc_publisher_recorder_start_new_file: publisher_event = "開(kāi)始一個(gè)新的錄像文件 : " + param3; break; case ntsmarteventid.event_daniulive_erc_publisher_one_recorder_file_finished: publisher_event = "已生成一個(gè)錄像文件 : " + param3; break; case ntsmarteventid.event_daniulive_erc_publisher_send_delay: publisher_event = "發(fā)送時(shí)延: " + param1 + " 幀數(shù):" + param2; break; case ntsmarteventid.event_daniulive_erc_publisher_capture_image: publisher_event = "快照: " + param1 + " 路徑:" + param3; if (param1 == 0) { publisher_event = publisher_event + "截取快照成功.."; } else { publisher_event = publisher_event + "截取快照失敗.."; } break; case ntsmarteventid.event_daniulive_erc_publisher_rtsp_url: publisher_event = "rtsp服務(wù)url: " + param3; break; case ntsmarteventid.event_daniulive_erc_push_rtsp_server_response_status_code: publisher_event ="rtsp status code received, codeid: " + param1 + ", rtsp url: " + param3; break; case ntsmarteventid.event_daniulive_erc_push_rtsp_server_not_support: publisher_event ="服務(wù)器不支持rtsp推送, 推送的rtsp url: " + param3; break; } string str = "當(dāng)前回調(diào)狀態(tài):" + publisher_event; log.i(tag, str); message message = new message(); message.what = publisher_event_msg; message.obj = publisher_event; handler.sendmessage(message); } } 部分屏幕數(shù)據(jù)采集 回答:我們遇到的好多場(chǎng)景下,教室端,會(huì)拿出來(lái)3/4的區(qū)域用來(lái)投遞給學(xué)生看,1/4的區(qū)域,用來(lái)做一些指令等操作,這個(gè)時(shí)候,就需要考慮屏幕區(qū)域裁剪: 代碼語(yǔ)言:javascript 復(fù)制 /** * 投遞裁剪過(guò)的rgba數(shù)據(jù) * * @param data: rgba data * * @param rowstride: stride information * * @param width: width * * @param height: height * * @param clipedleft: 左; clipedtop: 上; clipedwidth: 裁剪后的寬; clipedheight: 裁剪后的高; 確保傳下去裁剪后的寬、高均為偶數(shù) * * @return {0} if successful */ public native int smartpublisheroncapturevideoclipedrgbadata(long handle, bytebuffer data, int rowstride, int width, int height, int clipedleft, int clipedtop, int clipedwidth, int clipedheight); 文字、圖片水印 好多場(chǎng)景下,同屏者會(huì)把公司logo,和一定的文字信息展示在推送端,這個(gè)時(shí)候,需要考慮到文字和圖片水印問(wèn)題: 代碼語(yǔ)言:javascript 復(fù)制 /** * set text water-mark(設(shè)置文字水印) * * @param fontsize: it should be "medium", "small", "big" * * @param waterpostion: it should be "topleft", "topright", "bottomleft", "bottomright". * * @param xpading, ypading: the distance of the original picture. * * <pre> the interface is only used for setting font water-mark when publishing stream. </pre> * * @return {0} if successful */ public native int smartpublishersettextwatermark(long handle, string watertext, int isappendtime, int fontsize, int waterpostion, int xpading, int ypading); /** * set text water-mark font file name(設(shè)置文字水印字體路徑) * * @param fontfilename: font full file name, e.g: /system/fonts/droidsansfallback.ttf * * @return {0} if successful */ public native int smartpublishersettextwatermarkfontfilename(long handle, string fontfilename); /** * set picture water-mark(設(shè)置png圖片水印) * * @param picpath: the picture working path, e.g: /sdcard/logo.png * * @param waterpostion: it should be "topleft", "topright", "bottomleft", "bottomright". * * @param picwidth, picheight: picture width & height * * @param xpading, ypading: the distance of the original picture. * * <pre> the interface is only used for setting picture(logo) water-mark when publishing stream, with "*.png" format </pre> * * @return {0} if successful */ public native int smartpublishersetpicturewatermark(long handle, string picpath, int waterpostion, int picwidth, int picheight, int xpading, int ypading); 屏幕權(quán)限獲取|數(shù)據(jù)采集 采集推送之前,需要獲取屏幕權(quán)限,拿到屏幕數(shù)據(jù)后,調(diào)用sdk接口,完成推送或錄像操作即可: 代碼語(yǔ)言:javascript 復(fù)制 @targetapi(build.version_codes.lollipop) private boolean startscreencapture() { log.i(tag, "startscreencapture.."); setupmediaprojection(); setupvirtualdisplay(); return true; } private int align(int d, int a) { return (((d) + (a - 1)) & ~(a - 1)); } @suppresswarnings("deprecation") @suppresslint("newapi") private void createscreenenvironment() { sreenwindowwidth = mwindowmanager.getdefaultdisplay().getwidth(); screenwindowheight = mwindowmanager.getdefaultdisplay().getheight(); log.i(tag, "screenwindowwidth: " + sreenwindowwidth + ",screenwindowheight: " + screenwindowheight); if (sreenwindowwidth > 800) { if (screenresolution == screen_resolution_standard) { scale_rate = scale_rate_half; sreenwindowwidth = align(sreenwindowwidth / 2, 16); screenwindowheight = align(screenwindowheight / 2, 16); } else if(screenresolution == screen_resolution_low) { scale_rate = scale_rate_two_fifths; sreenwindowwidth = align(sreenwindowwidth * 2 / 5, 16); screenwindowheight = align(screenwindowheight * 2 / 5, 16); } } log.i(tag, "after adjust mwindowwidth: " + sreenwindowwidth + ", mwindowheight: " + screenwindowheight); int pf = mwindowmanager.getdefaultdisplay().getpixelformat(); log.i(tag, "display format:" + pf); displaymetrics displaymetrics = new displaymetrics(); mwindowmanager.getdefaultdisplay().getmetrics(displaymetrics); mscreendensity = displaymetrics.densitydpi; mimagereader = imagereader.newinstance(sreenwindowwidth, screenwindowheight, 0x1, 6); mmediaprojectionmanager = (mediaprojectionmanager) getsystemservice(context.media_projection_service); } @suppresslint("newapi") private void setupmediaprojection() { mmediaprojection = mmediaprojectionmanager.getmediaprojection( mainactivity.mresultcode, mainactivity.mresultdata); } @suppresslint("newapi") private void setupvirtualdisplay() { mvirtualdisplay = mmediaprojection.createvirtualdisplay( "screencapture", sreenwindowwidth, screenwindowheight, mscreendensity, displaymanager.virtual_display_flag_auto_mirror, mimagereader.getsurface(), null, null); mimagereader.setonimageavailablelistener( new imagereader.onimageavailablelistener() { @override public void onimageavailable(imagereader reader) { image image = mimagereader.acquirelatestimage(); if (image != null) { processscreenimage(image); //image.close(); } } }, null); } private void startrecorderscreen() { log.i(tag, "start recorder screen.."); if (startscreencapture()) { new thread() { @override public void run() { log.i(tag, "start record.."); } }.start(); } } private bytebuffer deepcopy(bytebuffer source) { int sourcep = source.position(); int sourcel = source.limit(); bytebuffer target = bytebuffer.allocatedirect(source.remaining()); target.put(source); target.flip(); source.position(sourcep); source.limit(sourcel); return target; } /** * process image data as desired. */ @suppresslint("newapi") private void processscreenimage(image image) { if(!ispushingrtmp && !isrecording &&!isrtsppublisherrunning) { image.close(); return; } /* final image.plane[] planes = image.getplanes(); width_ = image.getwidth(); height_ = image.getheight(); row_stride_ = planes[0].getrowstride(); bytebuffer buf = deepcopy(planes[0].getbuffer()); */ // log.i("onscreenimage", "new image"); pushimage(image); } @suppresslint("newapi") private void stopscreencapture() { if (mvirtualdisplay != null) { mvirtualdisplay.release(); mvirtualdisplay = null; } } 基礎(chǔ)初始化 代碼語(yǔ)言:javascript 復(fù)制 private void initandsetconfig() { //開(kāi)始要不要采集音頻或視頻,請(qǐng)自行設(shè)置 publisherhandle = libpublisher.smartpublisheropen(this.getapplicationcontext(), audio_opt, video_opt, sreenwindowwidth, screenwindowheight); if ( publisherhandle == 0 ) { return; } log.i(tag, "publisherhandle=" + publisherhandle); libpublisher.setsmartpublishereventcallbackv2(publisherhandle, new eventhandev2()); if(videoencodetype == 1) { int h264hwkbps = sethardwareencoderkbps(true, sreenwindowwidth, screenwindowheight); log.i(tag, "h264hwkbps: " + h264hwkbps); int issupporth264hwencoder = libpublisher .setsmartpublishervideohwencoder(publisherhandle, h264hwkbps); if (issupporth264hwencoder == 0) { log.i(tag, "great, it supports h.264 hardware encoder!"); } } else if (videoencodetype == 2) { int hevchwkbps = sethardwareencoderkbps(false, sreenwindowwidth, screenwindowheight); log.i(tag, "hevchwkbps: " + hevchwkbps); int issupporthevchwencoder = libpublisher .setsmartpublishervideohevchwencoder(publisherhandle, hevchwkbps); if (issupporthevchwencoder == 0) { log.i(tag, "great, it supports hevc hardware encoder!"); } } if(is_sw_vbr_mode) { int is_enable_vbr = 1; int video_quality = calvideoquality(sreenwindowwidth, screenwindowheight, true); int vbr_max_bitrate = calvbrmaxkbitrate(sreenwindowwidth, screenwindowheight); libpublisher.smartpublishersetswvbrmode(publisherhandle, is_enable_vbr, video_quality, vbr_max_bitrate); } //音頻相關(guān)可以參考smartpublisher工程 /* if (!is_speex) { // set aac encoder libpublisher.smartpublishersetaudiocodectype(publisherhandle, 1); } else { // set speex encoder libpublisher.smartpublishersetaudiocodectype(publisherhandle, 2); libpublisher.smartpublishersetspeexencoderquality(publisherhandle, 8); } libpublisher.smartpublishersetnoisesuppression(publisherhandle, is_noise_suppression ? 1 : 0); libpublisher.smartpublishersetagc(publisherhandle, is_agc ? 1 : 0); */ // libpublisher.smartpublishersetclippingmode(publisherhandle, 0); //libpublisher.smartpublishersetswvideoencoderprofile(publisherhandle, sw_video_encoder_profile); //libpublisher.smartpublishersetswvideoencoderspeed(publisherhandle, sw_video_encoder_speed); // libpublisher.setrtmppublishingtype(publisherhandle, 0); libpublisher.smartpublishersetfps(publisherhandle, 18); //幀率可調(diào) libpublisher.smartpublishersetgopinterval(publisherhandle, 18*3); //libpublisher.smartpublishersetswvideobitrate(publisherhandle, 1200, 2400); //針對(duì)軟編碼有效,一般最大碼率是平均碼率的二倍 libpublisher.smartpublishersetswvideoencoderspeed(publisherhandle, 3); //libpublisher.smartpublishersaveimageflag(publisherhandle, 1); } 準(zhǔn)備推送|錄像|啟動(dòng)rtsp服務(wù) 代碼語(yǔ)言:javascript 復(fù)制 @suppresswarnings("deprecation") @override public void onstart(intent intent, int startid) { // todo auto-generated method stub super.onstart(intent, startid); log.i(tag, "onstart++"); if (libpublisher == null) return; clearallimages(); screenresolution = intent.getextras().getint("screenresolution"); videoencodetype = intent.getextras().getint("videoencodetype"); push_type = intent.getextras().getint("pushtype"); log.i(tag, "push_type: " + push_type); mwindowmanager = (windowmanager) getsystemservice(service.window_service); // 窗口管理者 createscreenenvironment(); startrecorderscreen(); //如果同時(shí)推送和錄像,設(shè)置一次就可以 initandsetconfig(); if ( publisherhandle == 0 ) { stopscreencapture(); return; } if(push_type == push_type_rtmp) { string publishurl = intent.getstringextra("publishurl"); log.i(tag, "publishurl: " + publishurl); if (libpublisher.smartpublisherseturl(publisherhandle, publishurl) != 0) { stopscreencapture(); log.e(tag, "failed to set publish stream url.."); if (publisherhandle != 0) { if (libpublisher != null) { libpublisher.smartpublisherclose(publisherhandle); publisherhandle = 0; } } return; } } //啟動(dòng)傳遞數(shù)據(jù)線程 post_data_thread = new thread(new datarunnable()); log.i(tag, "new post_data_thread.."); is_post_data_thread_alive = true; post_data_thread.start(); //錄像相關(guān)++ is_need_local_recorder = intent.getextras().getboolean("recorder"); if(is_need_local_recorder) { configrecorderparam(); int startret = libpublisher.smartpublisherstartrecorder(publisherhandle); if( startret != 0 ) { isrecording = false; log.e(tag, "failed to start recorder.."); } else { isrecording = true; } } //錄像相關(guān)—— if(push_type == push_type_rtmp) { log.i(tag, "rtmp pusher mode.."); //推流相關(guān)++ int startret = libpublisher.smartpublisherstartpublisher(publisherhandle); if (startret != 0) { ispushingrtmp = false; log.e(tag, "failed to start push rtmp stream.."); return; } else { ispushingrtmp = true; } //推流相關(guān)-- } else if(push_type == push_type_rtsp) { log.i(tag, "rtsp internal server mode.."); rtsp_handle_ = libpublisher.openrtspserver(0); if (rtsp_handle_ == 0) { log.e(tag, "創(chuàng)建rtsp server實(shí)例失敗! 請(qǐng)檢查sdk有效性"); } else { int port = 8554; if (libpublisher.setrtspserverport(rtsp_handle_, port) != 0) { libpublisher.closertspserver(rtsp_handle_); rtsp_handle_ = 0; log.e(tag, "創(chuàng)建rtsp server端口失敗! 請(qǐng)檢查端口是否重復(fù)或者端口不在范圍內(nèi)!"); } //string user_name = "admin"; //string password = "12345"; //libpublisher.setrtspserverusernamepassword(rtsp_handle_, user_name, password); if (libpublisher.startrtspserver(rtsp_handle_, 0) == 0) { log.i(tag, "啟動(dòng)rtsp server 成功!"); } else { libpublisher.closertspserver(rtsp_handle_); rtsp_handle_ = 0; log.e(tag, "啟動(dòng)rtsp server失敗! 請(qǐng)檢查設(shè)置的端口是否被占用!"); return; } isrtspservicerunning = true; } if(isrtspservicerunning) { log.i(tag, "onclick start rtsp publisher.."); string rtsp_stream_name = "stream1"; libpublisher.setrtspstreamname(publisherhandle, rtsp_stream_name); libpublisher.clearrtspstreamserver(publisherhandle); libpublisher.addrtspstreamserver(publisherhandle, rtsp_handle_, 0); if (libpublisher.startrtspstream(publisherhandle, 0) != 0) { log.e(tag, "調(diào)用發(fā)布rtsp流接口失敗!"); return; } isrtsppublisherrunning = true; } } //如果同時(shí)推送和錄像,audio啟動(dòng)一次就可以了 checkinitaudiorecorder(); log.i(tag, "onstart--"); } private void stoppush() { if(!ispushingrtmp) { return; } if (!isrecording && !isrtsppublisherrunning) { if (audiorecord_ != null) { log.i(tag, "stoppush, call audiorecord_.stoprecording.."); audiorecord_.stop(); if (audiorecordcallback_ != null) { audiorecord_.removecallback(audiorecordcallback_); audiorecordcallback_ = null; } audiorecord_ = null; } } if (libpublisher != null) { libpublisher.smartpublisherstoppublisher(publisherhandle); } if (!isrecording && !isrtsppublisherrunning) { if (publisherhandle != 0) { if (libpublisher != null) { libpublisher.smartpublisherclose(publisherhandle); publisherhandle = 0; } } } } 停止推送|錄像|rtsp服務(wù) 代碼語(yǔ)言:javascript 復(fù)制 private void stoprecorder() { if(!isrecording) { return; } if (!ispushingrtmp && !isrtsppublisherrunning) { if (audiorecord_ != null) { log.i(tag, "stoprecorder, call audiorecord_.stoprecording.."); audiorecord_.stop(); if (audiorecordcallback_ != null) { audiorecord_.removecallback(audiorecordcallback_); audiorecordcallback_ = null; } audiorecord_ = null; } } if (libpublisher != null) { libpublisher.smartpublisherstoprecorder(publisherhandle); } if (!ispushingrtmp && !isrtsppublisherrunning) { if (publisherhandle != 0) { if (libpublisher != null) { libpublisher.smartpublisherclose(publisherhandle); publisherhandle = 0; } } } } //停止發(fā)布rtsp流 private void stoprtsppublisher() { if(!isrtsppublisherrunning) { return; } if (!ispushingrtmp && !isrecording) { if (audiorecord_ != null) { log.i(tag, "stoprtsppublisher, call audiorecord_.stoprecording.."); audiorecord_.stop(); if (audiorecordcallback_ != null) { audiorecord_.removecallback(audiorecordcallback_); audiorecordcallback_ = null; } audiorecord_ = null; } } if (libpublisher != null) { libpublisher.stoprtspstream(publisherhandle); } if (!ispushingrtmp && !isrecording) { if (publisherhandle != 0) { if (libpublisher != null) { libpublisher.smartpublisherclose(publisherhandle); publisherhandle = 0; } } } } //停止rtsp服務(wù) private void stoprtspservice() { if(!isrtspservicerunning) { return; } if (libpublisher != null && rtsp_handle_ != 0) { libpublisher.stoprtspserver(rtsp_handle_); libpublisher.closertspserver(rtsp_handle_); rtsp_handle_ = 0; } } 感興趣的開(kāi)發(fā)者可酌情參考。

什么是互聯(lián)網(wǎng)思維:

@箐一 分享了她近期的感觸,覺(jué)得有理兒,且易懂,“互聯(lián)網(wǎng)思維就是讓用戶參與進(jìn)來(lái)”:1)傳統(tǒng)的燒烤:餐廳烤好,用戶吃 > 不好吃,罵餐廳,一定是餐廳的錯(cuò)2)互聯(lián)網(wǎng)思維的燒烤:用戶自己烤,烤了自己吃 > 不好吃,有可能是自己烤的不好,參與了其中,即使烤糊了,也是很有成就感的同理:1)用戶參與到產(chǎn)品的設(shè)計(jì)中來(lái)(小米的miui)2)用戶參與到產(chǎn)品的傳播中來(lái)(微博分享,好友圈分享)3)用戶參與到產(chǎn)品的評(píng)價(jià)中來(lái) (實(shí)體店的評(píng)論墻,電商網(wǎng)站的評(píng)論系統(tǒng))4)…這些都是典型“互聯(lián)網(wǎng)思維”的表現(xiàn)。 觀點(diǎn)一,互聯(lián)網(wǎng)思維是:1)免費(fèi):用戶可能不會(huì)為核心業(yè)務(wù)直接買(mǎi)單,互聯(lián)網(wǎng)公司不得不尋求其他利潤(rùn)途徑,典型是360安全衛(wèi)士的崛起2)快速:互聯(lián)網(wǎng)競(jìng)爭(zhēng)激烈,門(mén)檻不高,山寨成風(fēng),速度對(duì)互聯(lián)網(wǎng)行業(yè)就是生命,跑得慢的都將被遺忘 一切的一切,都在大數(shù)據(jù)中蘊(yùn)含4)極致思維:同觀點(diǎn)一5)平臺(tái)思維:平臺(tái)思維的特點(diǎn)首先是開(kāi)發(fā),建立平臺(tái),建立生態(tài)圈,才能活的長(zhǎng)久

2014世界杯:巴西該怎樣利用大數(shù)據(jù)?:

這套裝置是一個(gè)國(guó)際團(tuán)隊(duì)多年研發(fā)的成果,這個(gè)團(tuán)隊(duì)里有科學(xué)家有工程師,他們都為一個(gè)叫做“重新站立起來(lái)”的項(xiàng)目工作。 atos是一家法國(guó)公司,他們將負(fù)責(zé)里約奧運(yùn)會(huì)的信息技術(shù)網(wǎng)絡(luò),他們說(shuō)在2012年倫敦奧運(yùn)會(huì)的時(shí)候偵查到兩億五千五百萬(wàn)次安全事件。 作為一個(gè)科學(xué)家,他開(kāi)始了自己的探索。他使用了12,000個(gè)價(jià)格數(shù)據(jù)做研究,數(shù)據(jù)都是從旅游網(wǎng)站上抓取下來(lái)的,時(shí)間跨度有41天。他建立了一個(gè)預(yù)測(cè)模型,用這個(gè)模型他能為虛擬客人省下不少錢(qián)。 又過(guò)了幾年,這項(xiàng)技術(shù)就面世了。旅游網(wǎng)站amadeus已經(jīng)在跟你分享很多信息諸如:- 人們都是在哪里搜索機(jī)票信息的?- 大多數(shù)飛機(jī)航線從哪里出發(fā)?- 機(jī)票的收入和回報(bào)是怎樣的? 南非世界杯過(guò)后,南非的游客增長(zhǎng)了22%??煽诳蓸?lè)的社會(huì)數(shù)據(jù)實(shí)驗(yàn)就像其他精明的跨國(guó)公司一樣,可口可樂(lè)也希望讓自己的品牌充斥你的生活。他們想讓你喝可口可樂(lè),該如何達(dá)到這個(gè)目的呢?沒(méi)錯(cuò),還是大數(shù)據(jù)。

web前端學(xué)習(xí) 第2章 網(wǎng)頁(yè)重構(gòu)1 第一個(gè)網(wǎng)頁(yè):

0.png 一、內(nèi)容概述從本節(jié)我們開(kāi)始正式學(xué)習(xí)前端開(kāi)發(fā)的課程內(nèi)容,首先我們從第一個(gè)網(wǎng)頁(yè)開(kāi)始了解html和css的基本概念,并通過(guò)創(chuàng)建第一個(gè)網(wǎng)頁(yè)了解vscode的基本使用方法。 網(wǎng)頁(yè)文件本身是一種文本文件, 使用 ! 慶幸的是有了這本《前端開(kāi)發(fā)學(xué)習(xí)手冊(cè)》,只要掌握十幾個(gè)標(biāo)簽,就能完成生動(dòng)的網(wǎng)頁(yè)。在下一節(jié)我們會(huì)列舉常用的html標(biāo)簽。 剛才我們了解了,使用html可以設(shè)置網(wǎng)頁(yè)中的內(nèi)容(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的一個(gè)應(yīng)用)等文件樣式的計(jì)算機(jī)語(yǔ)言,那么使用css就可以進(jìn)一步裝飾這些內(nèi)容,錄入設(shè)置文本的字體顏色,或是改變圖片的尺寸等等。 1 2 3 4 5 6 document 7 8 p{ 9 color:red;10 }11 12 13 14 我的第一個(gè)網(wǎng)頁(yè)15 16 上面的代碼我們可以將p標(biāo)簽的文字設(shè)置成紅色。

ccf業(yè)務(wù)總部和學(xué)術(shù)交流中心落戶蘇州相城:

2019年1月12日,中國(guó)計(jì)算機(jī)學(xué)會(huì)(ccf)與蘇州市相城區(qū)人民政府、蘇州高鐵新城管委會(huì)在蘇州高鐵金科大酒店聯(lián)合舉辦了ccf業(yè)務(wù)總部&學(xué)術(shù)交流中心落地蘇州相城簽約儀式及新聞發(fā)布會(huì),ccf理事長(zhǎng)高文,秘書(shū)長(zhǎng)杜子德 簽約儀式由相城區(qū)副區(qū)長(zhǎng)朱小海主持。 同時(shí)ccf還將深入建設(shè)線上服務(wù)和區(qū)域會(huì)員服務(wù)以及其他和ccf發(fā)展有關(guān)的業(yè)務(wù),線上服務(wù)包括但不限于ccf網(wǎng)站、數(shù)字圖書(shū)館、ccf在線、會(huì)議管理服務(wù)、會(huì)員管理和服務(wù)等。 蘇州市相城區(qū)人民政府和蘇州高鐵新城管理委員會(huì)將對(duì)建設(shè)和運(yùn)營(yíng)ccf業(yè)務(wù)總部&學(xué)術(shù)交流中心提供相關(guān)有效支持,幫助ccf基于蘇州做好區(qū)域輻射服務(wù)。 ? 簽約儀式上,ccf理事長(zhǎng)高文,ccf前任副理事長(zhǎng)、中國(guó)工程院副院長(zhǎng)陳左寧,蘇州市政府副秘書(shū)長(zhǎng)盧淵,蘇州市科協(xié)主席程波,相城區(qū)委書(shū)記顧海東的共同見(jiàn)證下,杜子德、潘春華、蘇學(xué)慶在合作協(xié)議上簽字。

1分鐘鏈圈 | 今日波場(chǎng)虛擬機(jī)tvm正式上線,大幅降低dapp運(yùn)營(yíng)成本:

:區(qū)塊鏈在數(shù)據(jù)分析領(lǐng)域仍有很大空間人民網(wǎng):區(qū)塊鏈技術(shù)或?qū)⒔鉀Q傳媒業(yè)信源追溯、版權(quán)保護(hù)等痛點(diǎn)公司紐交所上市公司vmware推出區(qū)塊鏈項(xiàng)目concord,用于數(shù)字共識(shí)和智能合同執(zhí)行鄭州銀行:將利用區(qū)塊鏈技術(shù)打造商貿(mào)物流 “智慧平臺(tái)”國(guó)內(nèi)首家互聯(lián)網(wǎng)保險(xiǎn)公司眾安在線研發(fā)上半年投入同比增加91%,已形成t系列區(qū)塊鏈產(chǎn)品五條科技產(chǎn)品線恭喜你,今天的新聞全部看完啦。 1.今日波場(chǎng)虛擬機(jī)tvm正式上線,大幅降低dapp運(yùn)營(yíng)成本 今日波場(chǎng)虛擬機(jī)tvm正式上線,在直播中,波場(chǎng)技術(shù)負(fù)責(zé)人趙宏著重介紹了波場(chǎng)虛擬機(jī)的特性,除在測(cè)試版時(shí)已公布的“完全兼容以太坊虛擬機(jī)”外,趙宏表示 10.鄭州銀行:將利用區(qū)塊鏈技術(shù)打造商貿(mào)物流“智慧平臺(tái)”根據(jù)新浪財(cái)經(jīng)消息,鄭州銀行將充分利用鄭州市作為國(guó)家中心城市、“一帶一路”重要節(jié)點(diǎn)城市的優(yōu)勢(shì),加強(qiáng)與電商巨頭、物流公司、物流園區(qū)的合作,通過(guò)聚集廣泛的金融資源 ,借助大數(shù)據(jù)、區(qū)塊鏈等新技術(shù),打造商貿(mào)物流“智慧平臺(tái)”,聚焦解決會(huì)員企業(yè)的資金流、信息流、物流等痛點(diǎn)難點(diǎn)問(wèn)題,力推實(shí)現(xiàn)商貿(mào)物流金融領(lǐng)域“商流、物流、資金流、信息流”的四流合一,推進(jìn)商貿(mào)物流金融模式的創(chuàng)新發(fā)展

大數(shù)據(jù)與商業(yè)地理分析:

接下來(lái),深入到每一個(gè)街道分區(qū)內(nèi)部,根據(jù)分區(qū)特征、商業(yè)信息點(diǎn)的分布與區(qū)域聚集度進(jìn)行打分,結(jié)合該城市各分區(qū)內(nèi)已建在建籌建樓宇列表選出網(wǎng)點(diǎn)的最優(yōu)位置(見(jiàn)圖1)。? 即使是城市軌道交通建設(shè)這樣長(zhǎng)期而浩大的工程,商業(yè)地理分析亦能提供獨(dú)特的視角。近期我們獲邀為西南某省會(huì)城市的軌道交通發(fā)展把脈。從地理空間的角度來(lái)考察地鐵規(guī)劃再合適不過(guò)。 全面竣工后39%的城市人口將會(huì)在地鐵站點(diǎn)周邊800米內(nèi)。但與倫敦和莫斯科等國(guó)際都市相比,地鐵站點(diǎn)密度仍然偏低。 同時(shí),半數(shù)以上的醫(yī)院和學(xué)校超出了地鐵站點(diǎn)800米覆蓋范圍,站點(diǎn)附近尚缺乏足夠的配套公共服務(wù)設(shè)施。進(jìn)一步分析發(fā)現(xiàn),還有部分地鐵站點(diǎn)周?chē)丝谙∈枨疑虡I(yè)活動(dòng)不頻繁,可能是城市中的價(jià)值洼地(見(jiàn)圖3)。?? 過(guò)去幾年,在麥肯錫全球商業(yè)地理分析團(tuán)隊(duì)的幫助和多方努力下,我們已經(jīng)構(gòu)建了深入到街道級(jí)別的地理信息數(shù)據(jù)庫(kù),涵蓋近千萬(wàn)的商業(yè)信息點(diǎn),并已經(jīng)應(yīng)用于數(shù)十個(gè)客戶項(xiàng)目的分析中,在中國(guó)處于領(lǐng)先地位。

@zWSK5kW710 ?- @企業(yè)流程管理 @全自動(dòng)進(jìn)銷(xiāo)存管理系統(tǒng) @電子檔案管理平臺(tái)
轉(zhuǎn)載請(qǐng)注明出處,本站網(wǎng)址:http://www.zwhvip.com/news/2064.html
相關(guān)推薦