您的位置:首頁 > 軟件教程 > 教程 > 國產(chǎn)操作系統(tǒng)上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器

國產(chǎn)操作系統(tǒng)上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器

來源:好特整理 | 時(shí)間:2024-10-24 09:56:14 | 閱讀:147 |  標(biāo)簽: T 風(fēng) S C in 服務(wù) 麥克風(fēng) 流媒體 攝像頭 服務(wù)器 媒體 操作系統(tǒng) linux 視頻 國產(chǎn)   | 分享到:

隨著國際政治經(jīng)濟(jì)形勢的變化,尤其是中美科技競爭日益激烈,軟件信創(chuàng)國產(chǎn)化已經(jīng)迫在眉睫。在這種大環(huán)境下,有客戶需要將現(xiàn)有的Windows軟件逐步遷移到信創(chuàng)國產(chǎn)化基礎(chǔ)設(shè)施上,比如需要在銀河麒麟或統(tǒng)信UOS上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器(如nginx或srs),那么這個(gè)要如何實(shí)現(xiàn)了?

隨著國際政治經(jīng)濟(jì)形勢的變化,尤其是中美科技競爭日益激烈,軟件信創(chuàng)國產(chǎn)化已經(jīng)迫在眉睫。在這種大環(huán)境下,我們將現(xiàn)有的Windows版軟件逐步遷移到信創(chuàng)國產(chǎn)化基礎(chǔ)設(shè)施上,適配國產(chǎn)操作系統(tǒng)(如銀河麒麟、統(tǒng)信UOS)、國信芯片(如飛騰、鯤鵬、海光、龍芯、麒麟)以及國產(chǎn)DB。

我們經(jīng)常有這樣的需求,比如需要在銀河麒麟或統(tǒng)信UOS上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器(如nginx或srs),那么這個(gè)要如何實(shí)現(xiàn)了?

一. 技術(shù)方案

要完成這個(gè)功能,具體來說,需要解決如下幾個(gè)技術(shù)問題:

(1)麥克風(fēng)數(shù)據(jù)采集。

(2)攝像頭數(shù)據(jù)采集。

(3)音頻數(shù)據(jù)AAC編碼。

(4)視頻數(shù)據(jù)H264編碼。

(5)將編碼后的數(shù)據(jù)按RTMP協(xié)議推送給流媒體服務(wù)器。

(6)通過時(shí)間戳(PTS)保證音頻視頻的同步。

我們使用跨平臺(tái)的 .NET Core (C#),跨平臺(tái)的UI框架Avalonia,再借助 LinuxCapture 和 NPusher.NetCore 這兩個(gè)組件,就很容易采集到麥克風(fēng)和攝像頭的數(shù)據(jù),并且將它們推流到流媒體服務(wù)器上。

我們先看看推流程序在銀河麒麟上的運(yùn)行效果:

國產(chǎn)操作系統(tǒng)上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器

兩個(gè)下拉列表可以選擇要使用的麥克風(fēng)和攝像頭設(shè)備。

點(diǎn)擊“開始”按鈕,麥克風(fēng)和攝像頭將開始采集數(shù)據(jù),并推流至流媒體Server。

如果中途網(wǎng)絡(luò)斷開,推流將會(huì)中斷,并嘗試自動(dòng)重連,重連成功后,將恢復(fù)推流。

點(diǎn)擊“結(jié)束”按鈕,則將結(jié)束音視頻采集和推流。

二.具體實(shí)現(xiàn)

(1)ICameraCapturer是攝像頭視頻采集組件;IMicrophoneCapturer是麥克風(fēng)聲音采集組件。

(2)我們可以通過調(diào)用CapturerFactory的CreateXXXX方法來創(chuàng)建對應(yīng)的采集器實(shí)例。

(3)得到采集器實(shí)例后,調(diào)用Start方法,即可開始采集;調(diào)用Stop方法,即停止采集。

(4)采集得到的數(shù)據(jù),將通過相應(yīng)的事件(ImageCaptured、AudioCaptured)暴露出來,我們預(yù)定這些事件,即可拿到采集的數(shù)據(jù)。

(5)將拿到的數(shù)據(jù)喂給IStreamPusher,就會(huì)將其推流到指定的流媒體服務(wù)器。

我們這里列一下核心代碼,完整的代碼大家可以從文末下載源碼進(jìn)行了解。

創(chuàng)建并啟動(dòng)采集器:

創(chuàng)建并啟動(dòng)推流器:

將采集到的數(shù)據(jù)喂給推流器:

推流器內(nèi)部會(huì)對音視頻數(shù)據(jù)進(jìn)行編碼,并依據(jù)RTMP協(xié)議發(fā)送給流媒體服務(wù)器。

停止推流:

三. 部署運(yùn)行

如果要在銀河麒麟或統(tǒng)信UOS上運(yùn)行這里的RTMP推流程序,則需要現(xiàn)在目標(biāo)操作系統(tǒng)上安裝.NET Core 3.1。

然后將VS生成目錄下的 netcoreapp3.1 文件夾拷貝到目標(biāo)電腦上,進(jìn)入netcoreapp3.1文件夾,打開終端,并在終端中輸入如下命令:

回車運(yùn)行后,就會(huì)出現(xiàn)前面截圖的UI界面,然后我們就可以預(yù)覽攝像頭,并開始推流麥克風(fēng)攝像頭了。

四. 源碼下載

Oraycn.Avalonias.PusherDemo.rar

源碼中包含的非托管庫是X64架構(gòu)的,如果需要在其它架構(gòu)的國產(chǎn)芯片上運(yùn)行該程序,可以聯(lián)系我獲取對應(yīng)架構(gòu)的非托管庫。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

風(fēng) 1.01
風(fēng) 1.01
類型:休閑益智  運(yùn)營狀態(tài):內(nèi)測  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動(dòng)

《風(fēng)》是由開發(fā)商小白兔工作室開發(fā)的一款畫風(fēng)3D清新可愛的休閑益智類游戲,游戲中玩家通過操控羽毛移動(dòng)、

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)