91亚洲国产国产国产,丁香婷婷综合网,日本成人在线免费观看,午夜网站在线观看www,古代级a毛片免费观看动漫,久久新色,成人亚洲欧美在线电影www色

孟村回族政府辦公oa系統(tǒng):鼎湖區(qū)政務(wù)OA中智慧教室無紙化同屏方案是否適用RTMP?

時間:2024-11-27 11:14:56 信創(chuàng)OA資訊首頁 孟村回族政府辦公oa系統(tǒng)鼎湖區(qū)政務(wù)OA


java組合模式(composite):

組合模式(composite)使用組合模式的場景:??把部分和整體的關(guān)系用樹形結(jié)構(gòu)來表示,從而使客戶端可以使用統(tǒng)一的方式處理部分對象和整體對象.組合模式核心:抽象構(gòu)件(component)角色: 定義了葉子和容器構(gòu)件的共同點葉子 文件管理案例component抽象** * 抽象構(gòu)建 * @author 波波烤鴨 * @email dengpbs@163.com * *public interface abstractfile { f1.add(imagefile); f1.add(f); f1.operiation();}輸出:處理:c:文件夾視頻文件:aaa.mp4 處理操作視頻文件:aaa.mp4 處理操作圖片文件:波波烤鴨. jpg 處理操作處理:c:tools文件夾視頻文件:aaa.mp4 處理操作圖片文件:波波烤鴨.jpg 處理操作文本文件:readme.txt 處理操作開發(fā)中的應(yīng)用場景:操作系統(tǒng)的資源管理器gui中的容器層次圖 xml文件解析政務(wù)OA系統(tǒng)中,組織結(jié)構(gòu)的處理junit單元測試框架 ? 底層設(shè)計就是典型的組合模式,testcase(葉子)、testunite(容器)、test接口(抽象)?

小結(jié)css的float屬性:

padding:?0;????????} ????????img?{????????????float:?left;????????}???? ????????????????????新垣結(jié)衣 (aragaki?yui),1988年6月11日出生于沖繩縣那霸市。 2007年,她從日出高校畢業(yè)后開始專注于演藝發(fā)展,并發(fā)表個人首張音樂專輯《天空》;同年,新垣結(jié)衣還主演了愛情片《戀空》,而她也憑借該片獲得了多個電影新人獎項????????。 2010年,主演愛情片《花水木》。????????2011年,主演都市劇《全開女孩》。2012年,相繼參演現(xiàn)代劇《legal????????high》、劇情片《劇場版新參者:麒麟之翼》。 新垣結(jié)衣長相甜美、笑容純真,擁有天使般笑容的她被受訪者們稱為“治愈系”美女。而在電影《戀空》中她的表演既具深度又生活化。 ???? 1.2創(chuàng)建網(wǎng)頁布局float屬性還常用于網(wǎng)頁布局:效果:?

微信公眾號借用別的微信公眾號支付配置:

借用其他賬號微信支付之前,要確保要借用微信公眾號的微信支付已開通;并且要借用微信支付的公眾號可以添加微信支付授權(quán)目錄、安全域名、授權(quán)域名和ip白名單;滿足微信支付條件的賬號(包括認證的服務(wù)號、認證的政府與媒體類訂閱號 ),可以在微信公眾平臺左側(cè)導(dǎo)航中出現(xiàn)“微信支付”的文字,點擊即可進行申請。 appid和appsecret在微信公眾平臺查看,若借用的是其他賬號的微信支付,則填寫這個開通微信支付的公眾號的appid和appsecret ;商戶號和api密鑰需登錄微信商戶平臺查看設(shè)置 ,配置后點擊確定即可保存 第三步、api密鑰的設(shè)置?第五步、使用開通微信支付公眾號登錄微信公眾平臺,點擊左側(cè)菜單的設(shè)置-》公眾號設(shè)置-》功能設(shè)置,添加安全域名、授權(quán)域名為:weixin.gycode.com? 第六步、開通微信支付的公眾號登錄微信公眾平臺,點擊左側(cè)菜單 開發(fā)-》基本配置,添加ip白名單:115.28.49.127?以上參數(shù)都配置成功后即可使用借用微信支付。

大數(shù)據(jù)時代,什么是數(shù)據(jù)分析的靈魂:

人類科學(xué)發(fā)展史上的不少進步都和數(shù)據(jù)采集分析直接相關(guān),例如現(xiàn)代醫(yī)學(xué)流行病學(xué)的開端。倫敦1854年發(fā)生了大規(guī)模的霍亂,很長時間沒有辦法控制。 一位醫(yī)師用標(biāo)點地圖的方法研究了當(dāng)?shù)厮植己突魜y患者分布之間的關(guān)系,發(fā)現(xiàn)有一口水井周圍,霍亂患病率明顯較高,借此找到了霍亂暴發(fā)的原因:一口被污染的水井。關(guān)閉這口水井之后,霍亂的發(fā)病率明顯下降。 大數(shù)據(jù)是非競爭性資源,有助于政府科學(xué)決策、商家精準(zhǔn)營銷大數(shù)據(jù)時代,數(shù)據(jù)的重要作用更加凸顯,許多國家都把大數(shù)據(jù)提升到國家戰(zhàn)略的高度。 政府合理利用大數(shù)據(jù),引導(dǎo)決策的將是基于實證的事實,政府會更有預(yù)見性、更加負責(zé)、更加開放。 小數(shù)據(jù)時代,政府做決策更多依憑經(jīng)驗和局部數(shù)據(jù),難免頭痛醫(yī)頭、腳痛醫(yī)腳。比如,交通堵塞就多修路。大數(shù)據(jù)時代,政府做決策能夠從粗放型轉(zhuǎn)向集約型。

孟村回族政府辦公政務(wù)OA系統(tǒng):鼎湖區(qū)政務(wù)oa中智慧教室無紙化同屏方案是否適用rtmp?

得到廣泛應(yīng)用。本文將深入探討oa政府辦公的重要性、優(yōu)勢和未來發(fā)展趨勢。第一部分:oa政府辦公的重要性現(xiàn)代化政府辦公環(huán)境中,信息的快速流動和高效處理是至關(guān)重要的。oa政府辦公系統(tǒng)通過將傳統(tǒng)紙質(zhì)文件轉(zhuǎn)換為電子文檔,實現(xiàn)了信息的數(shù)字化存儲和管理。這不僅提高了政府工作的效率,還減少了紙質(zhì)文件的使用和存儲成本,對環(huán)境保護產(chǎn)生了積極的影響。此外,oa政府辦公系統(tǒng)還能夠促進政府機關(guān)之間的協(xié)同合作和信息共享。通過統(tǒng)一的平臺和標(biāo)準(zhǔn)化的流程,不同部門之間可以更加便捷地溝通和協(xié)調(diào)工作,避免了信息孤島和工作重復(fù)。這種協(xié)同合作不僅提高了政府工作的效率,還增強了政府對外服務(wù)的一致性和可靠性。第二部分:oa政府辦公的優(yōu)勢提高工作效率:oa政府辦公系統(tǒng)通過自動化流程和任務(wù)分配,減少了繁瑣的手工操作和人為錯誤。工作人員可以更智慧教室無紙化方案技術(shù)背景 智慧教室無紙化方案是一種基于現(xiàn)代信息技術(shù),旨在通過數(shù)字化手段實現(xiàn)教學(xué)過程的無紙化、智能化和高效化的解決方案。該方案以學(xué)生為中心,強調(diào)互動化的數(shù)字教學(xué)服務(wù),旨在提升教學(xué)質(zhì)量和學(xué)習(xí)效率,同時減少對傳統(tǒng)紙張的依賴,實現(xiàn)綠色環(huán)保。以下是對智慧教室無紙化方案的詳細闡述: 一、方案概述 智慧教室無紙化方案通過整合物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等先進技術(shù),構(gòu)建了一個集智能管理、智慧教學(xué)、環(huán)境便捷調(diào)節(jié)及資源制作于一體的新型現(xiàn)代化智慧教室。該方案不僅實現(xiàn)了教學(xué)資源的數(shù)字化、網(wǎng)絡(luò)化,還通過智能設(shè)備和平臺實現(xiàn)了教學(xué)過程的自動化、智能化,為師生提供了更加便捷、高效、互動的學(xué)習(xí)和教學(xué)環(huán)境。 二、主要特點 數(shù)字化教學(xué)資源:智慧教室無紙化方案提供了豐富海量的數(shù)字化教學(xué)資源,包括電子教材、多媒體課件、在線題庫等,師生可以隨時隨地進行訪問和學(xué)習(xí),打破了傳統(tǒng)紙質(zhì)教材的束縛。 在線學(xué)習(xí)互動:通過智慧教室平臺,學(xué)生可以隨時收聽老師的講課內(nèi)容,參與在線討論、提問和答疑,實現(xiàn)了師生之間的即時互動。同時,學(xué)生還可以根據(jù)自己的學(xué)習(xí)進度和需求進行個性化學(xué)習(xí),提高了學(xué)習(xí)的針對性和自主性。 智能管理:智慧教室無紙化方案支持對教室內(nèi)的多種終端設(shè)備進行無縫連接和智能化管理,如智能白板、互動電子白板、環(huán)境監(jiān)測設(shè)備等。這些設(shè)備能夠自動采集和分析數(shù)據(jù),為教學(xué)和管理提供有力支持。 環(huán)境便捷調(diào)節(jié):智慧教室通過溫度、濕度和光照感應(yīng)器等設(shè)備,實現(xiàn)了對教室內(nèi)環(huán)境的自動調(diào)節(jié),為師生提供了更加舒適的學(xué)習(xí)和教學(xué)環(huán)境。 三、實施步驟 需求分析:根據(jù)學(xué)校的實際情況和需求,對智慧教室無紙化方案進行需求分析,明確建設(shè)目標(biāo)和功能需求。 方案設(shè)計:根據(jù)需求分析結(jié)果,設(shè)計智慧教室無紙化方案,包括系統(tǒng)架構(gòu)、設(shè)備選型、平臺開發(fā)等方面。 設(shè)備采購與安裝:按照方案要求采購相關(guān)設(shè)備,并進行安裝調(diào)試,確保設(shè)備能夠正常運行。 平臺開發(fā)與部署:開發(fā)智慧教室平臺,并進行部署和測試,確保平臺能夠穩(wěn)定運行并滿足教學(xué)需求。 培訓(xùn)與推廣:對教師和學(xué)生進行培訓(xùn)和推廣,幫助他們掌握智慧教室無紙化方案的使用方法和技巧。 四、應(yīng)用效果 智慧教室無紙化方案的實施可以帶來以下應(yīng)用效果: 提升教學(xué)質(zhì)量:通過數(shù)字化教學(xué)資源和在線學(xué)習(xí)互動功能,教師可以更加生動、直觀地傳授知識,激發(fā)學(xué)生的學(xué)習(xí)興趣和積極性;學(xué)生可以更加自主、靈活地進行學(xué)習(xí),提高學(xué)習(xí)效果和質(zhì)量。 提高教學(xué)效率:智慧教室無紙化方案可以大大簡化教學(xué)流程和管理流程,減少教師和管理人員的工作量;同時,通過智能設(shè)備和平臺的支持,可以實現(xiàn)教學(xué)過程的自動化和智能化,提高教學(xué)效率。 實現(xiàn)綠色環(huán)保:通過減少對傳統(tǒng)紙張的依賴和使用數(shù)字化教學(xué)資源等方式,智慧教室無紙化方案有助于實現(xiàn)綠色環(huán)保和可持續(xù)發(fā)展。 智慧教室rtmp方案探究 智慧教室rtmp在智慧教室場景下的應(yīng)用,以實現(xiàn)實時音視頻流傳輸、屏幕共享、互動教學(xué)等功能。以下是一個基于rtmp技術(shù)的智慧教室技術(shù)方案概述: 技術(shù)方案架構(gòu) 1. 組網(wǎng)與服務(wù)器部署 組網(wǎng)方式:建議采用無線組網(wǎng)方式,并配置高性能的ap模塊以支持大并發(fā)流量。推送端(如教師端設(shè)備)到ap的連接最好是有線網(wǎng)絡(luò),以確保穩(wěn)定性。 服務(wù)器部署:選擇srs或nginx作為rtmp服務(wù)器,可以根據(jù)實際情況與windows平臺的教師機部署在同一臺機器上,或部署在獨立的服務(wù)器上。 2. 教師端設(shè)備配置 如果教師有移動pad或其他android設(shè)備,可以直接將音視頻流推送到rtmp服務(wù)器,實現(xiàn)實時授課。 對于高分屏設(shè)備,建議適當(dāng)縮放視頻分辨率以減輕編碼和上行壓力,如將寬高縮放至2/3,并保持等比例縮放,縮放寬高建議做好字節(jié)對齊。 3. 學(xué)生端設(shè)備配置 學(xué)生端設(shè)備可以通過rtmp客戶端接收來自服務(wù)器的音視頻流,進行實時觀看和學(xué)習(xí)。 如果需要,學(xué)生端也可以作為示范案例,將屏幕數(shù)據(jù)共享給其他同學(xué),只需請求同屏,數(shù)據(jù)反推到rtmp服務(wù)器,其他學(xué)生即可查看。 4. 互動功能實現(xiàn) 通過rtmp協(xié)議,可以實現(xiàn)教師與學(xué)生的實時互動,如問答、投票等。 如果需要更進一步的監(jiān)控功能,如教師端監(jiān)控學(xué)生端的屏幕情況,可以通過學(xué)生端直接推送rtmp流或啟動內(nèi)置rtsp服務(wù)的方式實現(xiàn)。 關(guān)鍵技術(shù)點 1. 編碼與轉(zhuǎn)碼 使用適當(dāng)?shù)囊曨l編碼器(如h.264)和音頻編碼器(如aac)對音視頻流進行編碼,以確保高質(zhì)量的傳輸效果。 如果需要適應(yīng)不同帶寬或設(shè)備要求,可以使用ffmpeg等工具進行流的轉(zhuǎn)碼操作。 2. 橫豎屏適配 在android設(shè)備上,橫豎屏切換時需要考慮屏幕寬高的變化,確保推拉流兩端可以自動適配。 編碼器需要重啟以適應(yīng)新的分辨率設(shè)置,拉流端也需要能夠自動播放適應(yīng)變化后的視頻流。 3. 補幀策略 當(dāng)屏幕靜止不動時,為了避免播放端因幀間距過大而長時間收不到數(shù)據(jù),可以采用補幀策略。 保存最后一幀數(shù)據(jù),并設(shè)定一定的補幀間隔,以確保數(shù)據(jù)的連續(xù)性和流暢性。 4. 網(wǎng)絡(luò)穩(wěn)定性與重連機制 在網(wǎng)絡(luò)抖動或其他網(wǎng)絡(luò)異常情況下,需要有良好的重連機制和狀態(tài)回饋機制以確保傳輸?shù)姆€(wěn)定性。 通過設(shè)置心跳包、超時重連等策略來提高系統(tǒng)的健壯性和用戶體驗。 智慧教室方案選型 本文以大牛直播sdk的android的smartservicepublisherv2的同屏demo為例,android采集計時器,編碼打包分別啟動rtmp推送和輕量級rtsp服務(wù),windows過來分別拉取rtmp和rtsp的流,整體延遲毫秒級: 啟動app后,先選擇需要采集的分辨率(如果選原始分辨率,系統(tǒng)不做縮放),然后選擇“啟動媒體投影”,并分別啟動音頻播放采集、采集麥克風(fēng)。如果音頻播放采集和采集麥克風(fēng)都打開,可以通過右側(cè)下拉框,推送過程中,音頻播放采集和麥克風(fēng)采集實時切換。需要注意的是,android采集音頻播放的audio,音頻播放采集是依賴屏幕投影的,屏幕投影關(guān)閉后,音頻播放也就采不到了。 編碼的話,考慮到屏幕分辨率一般不會太低,我們可以縮放后再推送,默認我們開啟了原始分辨率、標(biāo)準(zhǔn)分辨率、低分辨率選項設(shè)置。一般建議標(biāo)準(zhǔn)分辨率即可。如果對畫質(zhì)和分辨率要求比較高,可以選擇原始分辨率。設(shè)備支持硬編碼,優(yōu)先選擇h.264硬編,如果是h.265硬編,需要rtmp服務(wù)器支持擴展h.265(或enhanced rtmp)。都選擇好后,設(shè)置rtmp推送的url,點開始rtmp推送按鈕即可。 下面從代碼邏輯實現(xiàn)角度,介紹下同屏的具體流程: 啟動媒體服務(wù),進入系統(tǒng)后,我們會自動啟動媒體服務(wù),對應(yīng)的實現(xiàn)邏輯如下: 代碼語言:java 復(fù)制 /* * mainactivity.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ private void start_media_service() { intent intent = new intent(getapplicationcontext(), streammediademoservice.class); if (build.version.sdk_int >= 26) { log.i(tag, "startforegroundservice"); startforegroundservice(intent); } else startservice(intent); bindservice(intent, service_connection_, context.bind_auto_create); button_stop_media_service_.settext("停止媒體服務(wù)"); } private void stop_media_service() { if (media_engine_callback_ != null) media_engine_callback_.reset(null); if (media_engine_ != null) { media_engine_.unregister_callback(media_engine_callback_); media_engine_ = null; } media_engine_callback_ = null; if (media_binder_ != null) { media_binder_ = null; unbindservice(service_connection_); } intent intent = new intent(getapplicationcontext(), streammediademoservice.class); stopservice(intent); button_stop_media_service_.settext("啟動媒體服務(wù)"); } 需要注意的是,android 6.0及以上版本,動態(tài)獲取audio權(quán)限: 代碼語言:java 復(fù)制 /* * mainactivity.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ private boolean check_record_audio_permission() { //6.0及以上版本,動態(tài)獲取audio權(quán)限 if (packagemanager.permission_granted == checkpermission(android.manifest.permission.record_audio, process.mypid(), process.myuid())) return true; return false; } private void request_audio_permission() { if (build.version.sdk_int < 23) return; log.i(tag, "requestpermissions record_audio"); activitycompat.requestpermissions(this, new string[] {android.manifest.permission.record_audio}, request_audio_code); } @override public void onrequestpermissionsresult(int requestcode, string[] permissions, int[] grantresults) { switch(requestcode){ case request_audio_code: if (grantresults != null && grantresults.length > 0 && packagemanager.permission_granted == grantresults[0]) { log.i(tag, "record_audio permission has been granted"); }else { toast.maketext(this, "請開啟錄音權(quán)限!", toast.length_short).show(); } break; } } 啟動、停止媒體投影: 代碼語言:java 復(fù)制 /* * mainactivity.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ private class buttonstartmediaprojectionlistener implements onclicklistener { public void onclick(view v) { if (null == media_engine_) return; if (media_engine_.is_video_capture_running()) { media_engine_.stop_audio_playback_capture(); media_engine_.stop_video_capture(); resolution_selector_.setenabled(true); button_capture_audio_playback_.settext("采集音頻播放"); button_start_media_projection_.settext("啟動媒體投影"); return; } intent capture_intent; capture_intent = media_projection_manager_.createscreencaptureintent(); startactivityforresult(capture_intent, request_media_projection); log.i(tag, "startactivityforresult request media projection"); } } 啟動媒體投影后,選擇“采集音頻播放”,如果需要采集麥克風(fēng),可以點擊“采集麥克風(fēng)”: 代碼語言:java 復(fù)制 /* * mainactivity.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ private class buttoncaptureaudioplaybacklistener implements onclicklistener { public void onclick(view v) { if (null == media_engine_) return; if (media_engine_.is_audio_playback_capture_running()) { media_engine_.stop_audio_playback_capture(); button_capture_audio_playback_.settext("采集音頻播放"); return; } if (!media_engine_.start_audio_playback_capture(44100, 1)) log.e(tag, "start_audio_playback_capture failed"); else button_capture_audio_playback_.settext("停止音頻播放采集"); } } private class buttonstartaudiorecordlistener implements onclicklistener { public void onclick(view v) { if (null == media_engine_) return; if (media_engine_.is_audio_record_running()) { media_engine_.stop_audio_record(); button_start_audio_record_.settext("采集麥克風(fēng)"); return; } if (!media_engine_.start_audio_record(44100, 1)) log.e(tag, "start_audio_record failed"); else button_start_audio_record_.settext("停止麥克風(fēng)"); } } 啟動、停止rtmp推送: 代碼語言:java 復(fù)制 /* * mainactivity.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ private class buttonrtmppublisherlistener implements onclicklistener { @override public void onclick(view v) { if (null == media_engine_) return; if (media_engine_.is_rtmp_stream_running()) { media_engine_.stop_rtmp_stream(); button_rtmp_publisher_.settext("開始rtmp推送"); text_view_rtmp_url_.settext("rtmp url: "); log.i(tag, "stop rtmp stream"); return; } if (!media_engine_.is_video_capture_running()) return; string rtmp_url; if (input_rtmp_url_ != null && input_rtmp_url_.length() > 1) { rtmp_url = input_rtmp_url_; log.i(tag, "start, input rtmp url:" + rtmp_url); } else { rtmp_url = baseurl + string.valueof((int) (system.currenttimemillis() % 1000000)); log.i(tag, "start, generate random url:" + rtmp_url); } media_engine_.set_fps(fps_); media_engine_.set_gop(gop_); media_engine_.set_video_encoder_type(video_encoder_type); if (!media_engine_.start_rtmp_stream(rtmp_url)) return; button_rtmp_publisher_.settext("停止rtmp推送"); text_view_rtmp_url_.settext("rtmp url:" + rtmp_url); log.i(tag, "rtmp url:" + rtmp_url); } } 可以看到,上述操作,都是在mainactivity.java調(diào)用的,如果是需要做demo版本集成,只需要關(guān)注mainactivity.java的業(yè)務(wù)邏輯即可,為了便于開發(fā)者對接,我們做了接口的二次封裝,除了常規(guī)的rtmp推送、輕量級rtsp服務(wù)設(shè)計外,如果需要錄像,只要在mainactivity.java調(diào)用這里的接口邏輯即可,非常方便: 代碼語言:java 復(fù)制 /* * ntstreammediaengine.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ package com.daniulive.smartpublisher; public interface ntstreammediaengine { void register_callback(callback callback); void unregister_callback(callback callback); void set_resolution_level(int level); int get_resolution_level(); /* * 啟動媒體投影 */ boolean start_video_capture(int token_code, android.content.intent token_data); boolean is_video_capture_running(); void stop_video_capture(); /* * 啟動麥克風(fēng) */ boolean start_audio_record(int sample_rate, int channels); boolean is_audio_record_running(); void stop_audio_record(); /* * android 10及以上支持, android10以下設(shè)備調(diào)用直接返回false * 需要有record_audio權(quán)限 * 要開啟媒體投影 */ boolean start_audio_playback_capture(int sample_rate, int channels); boolean is_audio_playback_capture_running(); void stop_audio_playback_capture(); /* * 輸出的音頻類型 * 0: 不輸出音頻 * 1: 輸出麥克風(fēng) * 2: 輸出audio playback(android 10及以上支持) */ boolean set_audio_output_type(int type); int get_audio_output_type(); void set_fps(int fps); void set_gop(int gop); boolean set_video_encoder_type(int video_encoder_type); int get_video_encoder_type(); /* * 推送rtmp */ boolean start_rtmp_stream(string url); boolean is_rtmp_stream_running(); string get_rtmp_stream_url(); void stop_rtmp_stream(); /* * 啟動rtsp server, 需要設(shè)置端口,用戶名和密碼可選 */ boolean start_rtsp_server(int port, string user_name, string password); boolean is_rtsp_server_running(); void stop_rtsp_server(); /* * 發(fā)布rtsp流 */ boolean start_rtsp_stream(string stream_name); boolean is_rtsp_stream_running(); string get_rtsp_stream_url(); void stop_rtsp_stream(); /* * 啟動本地錄像 */ boolean start_stream_record(string record_directory, int file_max_size); boolean is_stream_recording(); void stop_stream_record(); boolean is_stream_running(); interface callback { void on_nt_video_capture_stop(); void on_nt_rtsp_stream_url(string url); } } 如果對音視頻這塊相對了解的開發(fā)者,可以繼續(xù)到ntstreammediaprojectionengineimpl.java文件,查看或修改相關(guān)的技術(shù)實現(xiàn): 代碼語言:java 復(fù)制 /* * ntstreammediaprojectionengineimpl.java * created by daniusdk.com on 2017/04/19. * wechat: xinsheng120 */ package com.daniulive.smartpublisher; import android.app.activity; import android.app.application; import android.app.service; import android.content.context; import android.content.intent; import android.content.pm.packagemanager; import android.graphics.point; import android.graphics.rect; import android.media.image; import android.media.projection.mediaprojection; import android.media.projection.mediaprojectionmanager; import android.os.build; import android.os.handler; import android.os.handlerthread; import android.os.process; import android.util.log; import android.util.size; import android.view.surface; import android.view.windowmanager; import android.view.windowmetrics; import com.eventhandle.ntsmarteventcallbackv2; import com.eventhandle.ntsmarteventid; import com.voiceengine.ntaudiorecordv2; import com.voiceengine.ntaudiorecordv2callback; import com.videoengine.ntmediaprojectioncapture; import com.voiceengine.ntaudioplaybackcapture; import java.lang.ref.weakreference; import java.nio.bytebuffer; import java.util.concurrent.copyonwritearraylist; import java.util.concurrent.atomic.atomicreference; public class ntstreammediaprojectionengineimpl implements autocloseable, ntstreammediaengine, ntvirtualdisplaysurfacesinker.callback, ntmediaprojectioncapture.callback { private static final string tag = "ntlogprojectionengine"; private static final size default_size = new size(1920, 1080); public static final int resolution_low = 0; public static final int resolution_medium = 1; public static final int resolution_high = 2; private final application application_; private final long image_thread_id_; private final long running_thread_id_; private final handler image_handler_; private final handler running_handler_; private final windowmanager window_manager_; private final mediaprojectionmanager projection_manager_; private int screen_density_dpi_ = android.util.displaymetrics.density_default; private final smartpublisherjniv2 lib_publisher_; private final libpublisherwrapper.rtspserver rtsp_server_; private final libpublisherwrapper stream_publisher_; private final copyonwritearraylist<ntstreammediaengine.callback> callbacks_ = new copyonwritearraylist<>(); private final atomicreference<videosinkercapturepair> video_capture_pair_ = new atomicreference<>(); private final audiorecordcallbackimpl audio_record_callback_; private final audioplaybackcapturecallbackimpl audio_playback_capture_callback_; private final atomicreference<ntaudiorecordv2> audio_record_ = new atomicreference<>(); private final atomicreference<ntaudioplaybackcapture> audio_playback_capture_ = new atomicreference<>(); ... } 以android平臺rtmp推送模塊為例,我們主要實現(xiàn)了如下功能: 音頻編碼:aac/speex; 視頻編碼:h.264、h.265; 推流協(xié)議:rtmp; [音視頻]支持純音頻/純視頻/音視頻推送; [攝像頭]支持采集過程中,前后攝像頭實時切換; 支持幀率、關(guān)鍵幀間隔(gop)、碼率(bit-rate)設(shè)置; 支持rtmp推送 live|record模式設(shè)置; 支持前置攝像頭鏡像設(shè)置; 支持軟編碼、特定機型硬編碼; 支持橫屏、豎屏推送; 支持android屏幕采集推送; 支持自建標(biāo)準(zhǔn)rtmp服務(wù)器或cdn; 支持斷網(wǎng)自動重連、網(wǎng)絡(luò)狀態(tài)回調(diào); 支持實時動態(tài)水??; 支持實時快照; 支持降噪處理、自動增益控制; 支持外部編碼前音視頻數(shù)據(jù)對接; 支持外部編碼后音視頻數(shù)據(jù)對接; 支持rtmp擴展h.265(需設(shè)備支持h.265特定機型硬編碼)和enhanced rtmp; 支持實時音量調(diào)節(jié); 支持擴展錄像模塊; 支持unity接口; 支持h.264擴展sei發(fā)送模塊; 支持android 5.1及以上版本。 總結(jié) 智慧教室無紙化方案是一種具有廣泛應(yīng)用前景和發(fā)展?jié)摿Φ慕虒W(xué)解決方案。它不僅能夠提升教學(xué)質(zhì)量和學(xué)習(xí)效率,還能夠?qū)崿F(xiàn)綠色環(huán)保和可持續(xù)發(fā)展目標(biāo)。隨著信息技術(shù)的不斷發(fā)展和普及,智慧教室無紙化方案將會在未來的教育領(lǐng)域中發(fā)揮更加重要的作用。 智慧教室rtmp技術(shù)方案通過利用rtmp協(xié)議的實時性和低延遲特性,結(jié)合適當(dāng)?shù)慕M網(wǎng)、服務(wù)器部署、編碼轉(zhuǎn)碼、橫豎屏適配、補幀策略以及網(wǎng)絡(luò)穩(wěn)定性保障措施,為智慧教室場景下的實時授課、屏幕共享、互動教學(xué)等功能提供了強有力的技術(shù)支持。以上拋磚引玉,感興趣的開發(fā)者,可以單獨跟我溝通探討。

京東囤兵saas財務(wù)軟件 企業(yè)級市場現(xiàn)三國殺:

顯然hr并不是京東的唯一開放賦能的產(chǎn)品,從hr到財務(wù)軟件再到行政辦公等產(chǎn)品,未來京東都會有所涉獵。京東要發(fā)布saas財務(wù)軟件? 京東為什么要從財務(wù)軟件切入?財務(wù)系統(tǒng)是內(nèi)外連接管理的關(guān)鍵,京東選擇從財務(wù)、hr等方面入局,除了可以避開同阿里和騰訊正面交鋒,還有其他深層的動因。 第一、京東財務(wù)系統(tǒng)有別于用友和金蝶等財務(wù)系統(tǒng),是基于京東內(nèi)部電商業(yè)務(wù)自主研發(fā)而成,有其獨特性和實踐性。 與傳統(tǒng)財務(wù)軟件有所不同,京東依托京東開放產(chǎn)品賦能,融合京東集團復(fù)雜業(yè)務(wù)場景下的最佳實踐,提供了涵蓋收支、結(jié)算、資金、票務(wù)、稅務(wù)、賬務(wù)在內(nèi)的整套解決方案,再對接企業(yè)內(nèi)部系統(tǒng)構(gòu)建企業(yè)自己的云業(yè)務(wù)生態(tài)。 拋開以上幾點原因外,京東還有其他的戰(zhàn)略布署:第一、從財務(wù)軟件試水,未來可能會輸出更多的云業(yè)務(wù)能力。包括人力資源、行政、協(xié)同辦公等等。第二、在云計算方面京東急需找到一個突破點。

蘋果被曝重大系統(tǒng)漏洞:新款 macbook、iphone 12、ipad pro 統(tǒng)統(tǒng)波及!root 權(quán)限秒獲取,隱私文件隨意看:

看到這一幕,評論區(qū)的網(wǎng)友們也紛紛震驚:「啪的一下就執(zhí)行完了,很快啊?!埂杆f他是測試的,他可不是瞎測試的,終端,腳本,提權(quán),訓(xùn)練有素,后來他說他搞過好幾年安全。 就是啪的一下,明明系統(tǒng)說了不,該 app 仍然讀取到了相冊和通訊錄,并上傳到了攻擊者的服務(wù)器端。漏洞意味著什么?毫無疑問,這是第一個被發(fā)現(xiàn)的能影響蘋果 apple silicon 芯片設(shè)備的安全漏洞。 騰訊安全玄武實驗室就表示:理論上,任何惡意的 app 開發(fā)者都可以利用此漏洞。而且漏洞影響的設(shè)備,也不少。 一方面,騰訊安全玄武實驗室是全球頂尖的安全實驗室,能發(fā)現(xiàn)漏洞也是實力使然;另一方面,按照江湖規(guī)矩,在消息曝光前,玄武實驗室早已將漏洞技術(shù)細節(jié)報告給了蘋果安全團隊。 關(guān)于騰訊安全玄武實驗室最后,還是贅述補充下此次發(fā)現(xiàn)漏洞的安全大神團隊。關(guān)注安全領(lǐng)域的盆友,對騰訊安全玄武實驗室一定不會陌生。作為騰訊七大專業(yè)實驗室之一,于 2014 年成立。

敏捷畫卷:中國軟件史的精彩側(cè)影:

以上內(nèi)容來自thoughtworks中國區(qū)總經(jīng)理張松為《敏捷中國史》所作的序。在這一系列課程中,作者熊節(jié)也用部分章節(jié)敘述了在thoughtworks與敏捷的不解之緣。 2005 年,被西安豐富的高校資源和高新區(qū)政府的熱情態(tài)度所吸引,thoughtworks 在西安軟件園落戶,目標(biāo)是服務(wù)中國本土客戶。 當(dāng)時臺下的聽眾一片茫然。由于政府主導(dǎo)的重點行業(yè)信息化工程固有的特點,在當(dāng)時絕大多數(shù)中國 it 業(yè)者的概念中,軟件項目就只有一次預(yù)算和一次交付(多發(fā)生在年初和年末)。 在早期的三個本地項目中,thoughtworks 與西安高新區(qū)政府和河北省地稅局的合作都出現(xiàn)了不愉快,為時不長即告結(jié)束,只有與廈門的私企好望角的合作持續(xù)了較長時間。 在時任 thoughtworks 中國區(qū)副總經(jīng)理郭曉的開場演講中,他一方面迎合了行業(yè)對成本的重視,列舉 forrester 的數(shù)據(jù)說明采用敏捷開發(fā)方法可以大幅節(jié)省軟件項目成本。

澳大利亞瘋狂計劃:把現(xiàn)實世界數(shù)字化:

這是澳大利亞政府研究機構(gòu)csiro一項十年計劃的主要想法,該機構(gòu)向建造一個數(shù)字版的澳大利亞。 想要讓它成為現(xiàn)實,該研究團隊就必須找到一種將政府機構(gòu)、研究人員、私人企業(yè)和平民科學(xué)家提供的數(shù)據(jù)結(jié)合起來的方法,以便讓人們對各種不同體系(不論是水、能量、農(nóng)業(yè)、健康或者經(jīng)濟)如何與彼此溝通有更好的理解。 項目領(lǐng)導(dǎo)者jonathan yu表示:“我們從過去的項目里了解到跨學(xué)科研究方法是關(guān)鍵,但現(xiàn)在根本沒有數(shù)據(jù)基礎(chǔ)架構(gòu)?!?5年前,yu和lemon在塔斯馬尼亞島利用傳感器網(wǎng)絡(luò)和數(shù)據(jù)資源,從數(shù)據(jù)的角度來看待這座島嶼的狀態(tài)。該島嶼上的感應(yīng)器能實時監(jiān)測天氣、二氧化碳濃度、動物和養(yǎng)殖魚的健康以及水儲存與能量使用情況。 lemon說:“看到一個社區(qū)利用他們能得到的信息采取相應(yīng)措施,是一件很有趣的事情。對我而言這不過是oznome的牛刀小試而已?!?br>
轉(zhuǎn)載請注明出處,本站網(wǎng)址:http://www.wikihumidifier.com/news_1766.html
相關(guān)推薦