• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于瑞芯微平臺(tái)的嵌入式流媒體方案的研究與實(shí)現(xiàn)

      2022-08-25 08:44:54程雷陽
      電視技術(shù) 2022年8期
      關(guān)鍵詞:編解碼碼流插件

      程雷陽

      (北京中電慧視科技有限公司,北京 100015)

      0 引 言

      乘客信息系統(tǒng)(Passenger Information System,PIS)是地鐵列車為乘客提供到站等廣播服務(wù)和新聞、娛樂等各種資訊的綜合性信息系統(tǒng),在火災(zāi)、緊急疏散等突發(fā)情況下,系統(tǒng)可以提供緊急通知,因此也被稱為車載多媒體信息系統(tǒng)。隨著網(wǎng)絡(luò)和數(shù)字多媒體技術(shù)的發(fā)展,車載多媒體信息系統(tǒng)也逐漸要走向高清化、數(shù)字化,同時(shí)也引入了地面數(shù)字直播視頻源來滿足乘客對(duì)實(shí)時(shí)資訊的需求[1]。基于此,本文提出了一種基于瑞芯微平臺(tái)的車載高清流媒體客戶端的設(shè)計(jì)方案,并成功進(jìn)行了相關(guān)測(cè)試。播放系統(tǒng)由流傳輸設(shè)施和解碼終端組成,前端流媒體發(fā)送采用模擬視頻流服務(wù)器的形式,播放終端與媒體服務(wù)器之間通過以太網(wǎng)相連,本文主要考慮在IP層的廣泛應(yīng)用上,結(jié)合有線的數(shù)據(jù)鏈路層特點(diǎn),采用RTP/RTCP流媒體協(xié)議在UDP傳輸層進(jìn)行傳輸[2]。流媒體終端設(shè)備能夠充分滿足車載工作要求,系統(tǒng)功能穩(wěn)定性良好。軟件程序啟動(dòng)速度快并且支持多協(xié)議,視頻播放流暢,音頻無雜音存在,音視頻同步功能較好。這款跨平臺(tái)的嵌入式流媒體播放系統(tǒng)可以很好地實(shí)現(xiàn)車載視頻播放功能。

      1 瑞芯微媒體處理平臺(tái)

      瑞芯微公司提供的媒體處理軟件平臺(tái)(Media Process Platform,MPP)是適用于瑞芯微芯片系列的通用媒體處理軟件平臺(tái)。該平臺(tái)對(duì)應(yīng)用軟件屏蔽了芯片相關(guān)的復(fù)雜底層處理,屏蔽不同芯片的差異,為使用者提供統(tǒng)一的視頻媒體處理接口(Media Process Interface,MPI)。

      MPP提供了視頻解碼功能,解碼類型涵蓋了H.265/H.264/H.263/VP9/VP8/MPEG4/MPEG2/MPEG1/VC1/MJPEG,視頻編碼功能支持H.264/VP8/MJPEG,同時(shí)也提供了多種視頻處理功能,如視頻拷貝、縮放、色彩空間轉(zhuǎn)換以及場(chǎng)視頻解交織等。平臺(tái)系統(tǒng)框架的層次如圖1所示.

      圖1 MPP系統(tǒng)框架

      1.1 硬件層

      硬件層是瑞芯微系列芯片平臺(tái)的視頻編解碼硬件加速模塊,包括VPU,rkvdec,rkvenc等不同類型、不同功能的硬件加速器。

      1.2 內(nèi)核驅(qū)動(dòng)層

      內(nèi)核驅(qū)動(dòng)層包含Linux內(nèi)核的編碼器硬件設(shè)備驅(qū)動(dòng)以及相關(guān)的內(nèi)存管理單元、內(nèi)存、時(shí)鐘、電源管理模塊等,支持的平臺(tái)主要是Linux kernel 3.10和4.4兩個(gè)版本。MPP庫(kù)對(duì)于內(nèi)核驅(qū)動(dòng)有依賴。

      1.3 媒體處理軟件平臺(tái)

      用戶態(tài)的MPP層屏蔽了不同操作系統(tǒng)和不同芯片平臺(tái)的差異,為上層使用者提供統(tǒng)一的MPI接口。MPP層包括MPI模塊、OSAL模塊、HAL模塊以及視頻編解碼器Video Decoder/Video Encoder和視頻處理功能模塊(Video Process)。

      1.4 操作系統(tǒng)層

      操作系統(tǒng)層是MPP用戶態(tài)的運(yùn)行平臺(tái),如Android以及Debian等Linux發(fā)行版。本文最終應(yīng)用的實(shí)現(xiàn)基于Debian的發(fā)行版。

      1.5 應(yīng)用層

      MPP層通過MPI對(duì)接各種中間件軟件,可以采用的中間件軟件有OpenMax,ffmpeg和gstreamer。如果使用開源的FFmpeg庫(kù)解碼解封裝獲得流式數(shù)據(jù),基于Qt應(yīng)用程序中的OpenGL庫(kù)顯示平面視頻幀數(shù)[3]。gstreamer中的playbin2元件可以節(jié)省開發(fā)人員的精力,進(jìn)一步縮短產(chǎn)品的開發(fā)周期,如所用的解碼器支持多種格式的解碼,就可以增加產(chǎn)品對(duì)多媒體類型的支持[4]。本文最終實(shí)現(xiàn)采用的中間件軟件為gstreamer。

      由于視頻編解碼與視頻處理過程需要處理大量的數(shù)據(jù)交互,包括碼流數(shù)據(jù)、圖像數(shù)據(jù)以及內(nèi)存數(shù)據(jù),同時(shí)還要處理與上層應(yīng)用以及內(nèi)核驅(qū)動(dòng)的交叉關(guān)系,所以MPP設(shè)計(jì)了MPI接口,用于與上層交互。MPI接口使用的主要數(shù)據(jù)結(jié)構(gòu)如圖2所示。

      圖2 MPI接口數(shù)據(jù)結(jié)構(gòu)

      MppPacket為一維緩存封裝,可以從MppMem和MppBuffer生成,主要用于表示碼流數(shù)據(jù)。MppFrame為二維幀數(shù)據(jù)封裝,可以從MppMem和MppBuffer生成,主要用于表示圖像數(shù)據(jù)。使用MppPacket和MppFrame,就可以簡(jiǎn)單有效地完成一般的視頻編解碼工作。以視頻解碼為例,碼流輸入端把地址和大小賦值給MppPacket,通過put_packet接口輸入,在輸出端通過get_frame接口得到輸入圖像MppFrame,即可完成最簡(jiǎn)單的視頻解碼過程,部分偽代碼如圖3和圖4所示。

      圖4 視頻流輸出顯示

      MPI(Media Process Interface)是 MPP提供給用戶的接口,用于提供硬件編解碼功能以及一些必要的相關(guān)功能。MPI通過C結(jié)構(gòu)里的函數(shù)指針方式提供給用戶。用戶可以通過MPP上下文結(jié)構(gòu)MppCtx與MPI接口結(jié)構(gòu)MppApi組合使用來實(shí)現(xiàn)解碼器與編碼器的功能。用戶可以通mpp_create接口獲取MppCtx實(shí)例以及MppApi結(jié)構(gòu)體,再通過mpp_init來初始化MppCtx的編解碼類型與格式之后通過decode_xxx/encode_xxx以及poll/dequeuer/enqueue接口進(jìn)行訪問,使用結(jié)束時(shí)通過mpp_destroy接口進(jìn)行銷毀,過程如圖5所示。

      圖5 MPI相關(guān)函數(shù)

      2 gstreamer插件實(shí)現(xiàn)

      gstreamer是一個(gè)用于開發(fā)流媒體應(yīng)用的開源框架,采用了基于插件(plugin)和管道(pipeline)的體系結(jié)構(gòu)??蚣苤兴械墓δ苣K都被實(shí)現(xiàn)成可以插拔的組件(component),并且能很方便地安裝到任意一個(gè)管道上。rockchipmpp是瑞芯微公司開發(fā)的一個(gè)gstreamer插件,主要是為了把自己的MPP與gstreamer結(jié)合起來。使用者基于gstreamer開發(fā)一個(gè)應(yīng)用程序時(shí),使用gst/gst.h即可訪問庫(kù)文件中的函數(shù)。除此之外,還需要初始化gstreamer library。本文使用gst_init初始化,它的主要功能如下:

      (1)初始化gstreamer庫(kù);

      (2)注冊(cè)內(nèi)部Element;

      (3)加載插件列表,掃描列表中及相應(yīng)路徑下的插件;

      (4)解析并執(zhí)行命令行參數(shù)。

      構(gòu)建了所有必需的gstreamer插件之后,需要借助gstreamer來構(gòu)建從Debian基于Qt環(huán)境的媒體播放器組件VideoView的接口,利用MPP框架提供媒體處理服務(wù)。在這些步驟中,可以使用gstreamer框架中的一些低級(jí)別元素來構(gòu)建媒體播放器,不過采用這種方法相對(duì)復(fù)雜。例如,針對(duì)一個(gè)特定的剪輯視頻,首先要分析它屬于哪種視頻容器格式,然后根據(jù)不同的視頻容器格式,使用不同的解碼元素,并且需要連接傳輸管道中所涉及的基本元素,這樣才能使得整個(gè)視頻處理步驟運(yùn)行起來。由于不同的視頻剪輯對(duì)應(yīng)不同的處理元素,為了保證實(shí)用性和穩(wěn)定性,本文使用gstreamer的高級(jí)別元素“Playbin2”來啟動(dòng)傳輸管道,之后,添加條總線到Playbin2,讓視頻數(shù)據(jù)和視頻處理事件流入總線,最后啟動(dòng)傳輸管道和總線[5]。

      3 實(shí)驗(yàn)結(jié)果

      3.1 硬件平臺(tái)方案

      RK3568是一款定位中高端的通用型系統(tǒng)級(jí)芯片,采用22 nm先進(jìn)制程工藝,主要面向工業(yè)互聯(lián)網(wǎng)、HMI、NVR存儲(chǔ)、車載中控以及工業(yè)網(wǎng)關(guān)等領(lǐng)域。CPU采用四核64位Cortex-A55,主頻最高2.0 GHz,是一款非常優(yōu)秀的通用型SoC。同時(shí),RK3568內(nèi)嵌高性能2D加速硬件,可支持JPEG硬解碼、雙網(wǎng)口、三屏異顯以及多PCIESATA接口,本身集成神經(jīng)網(wǎng)絡(luò)處理器(Neural-network Processing Unit,NPU),其特性在圖片處理、存儲(chǔ)、通信、多功能外設(shè)等應(yīng)用場(chǎng)景可發(fā)揮獨(dú)特的優(yōu)勢(shì)。

      3.2 軟件平臺(tái)方案

      操作系統(tǒng)軟件平臺(tái)采用Debian 10,集成開發(fā)環(huán)境采用Qtcreator,采用Qt圖形界面的方式來實(shí)現(xiàn),Qt層面調(diào)用瑞芯微提供的gstreamer的插件rockchipmpp,前端流媒體數(shù)據(jù)發(fā)送采用使用WinSend發(fā)送UDP組播流,組播流地址為UDP://239.1.1.1:8208,如圖6所示。

      圖6 測(cè)試發(fā)送UDP組播TS視頻流

      3.3 測(cè)試結(jié)果

      首先使用WinSend模擬發(fā)送2 Mb·s-1的TS碼流,測(cè)試終端播放狀態(tài)。播放狀態(tài)如圖7所示。

      圖7 2 Mb·s-1的TS流媒體解碼效果

      使用WinSend模擬發(fā)送4 Mb·s-1的TS碼流,測(cè)試終端播放狀態(tài)。播放狀態(tài)如圖8所示。

      圖8 4 Mb·s-1的TS流媒體解碼效果

      兩種狀態(tài)均采用硬解碼實(shí)現(xiàn),CPU占用率為32%。實(shí)際測(cè)試有較多性能富余,可用于處理其他業(yè)務(wù)邏輯。實(shí)際CPU占用率如圖9所示。

      圖9 硬解碼CPU占用率

      4 結(jié) 語

      本文基于瑞芯微RK3568平臺(tái),使用平臺(tái)提供的MPP框架,同時(shí)采用gstreamer插件的形式對(duì)MPP框架視頻硬解碼接口進(jìn)行實(shí)現(xiàn)和調(diào)用,實(shí)現(xiàn)了車載流媒體的硬解碼方案,實(shí)測(cè)解碼達(dá)到設(shè)計(jì)的預(yù)期效果,CPU占用率較低,可以有富余的資源處理其他業(yè)務(wù)邏輯,實(shí)測(cè)解碼顯示效果良好、穩(wěn)定,滿足軌道交通車載媒體系統(tǒng)的使用需求。

      猜你喜歡
      編解碼碼流插件
      分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      數(shù)字電視TS碼流協(xié)議簡(jiǎn)要分析
      視聽(2021年8期)2021-08-12 10:53:42
      1553B總線控制器編解碼設(shè)計(jì)
      自編插件完善App Inventor與樂高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      大型民機(jī)試飛遙測(cè)視頻編解碼方法研究
      基于H.265編解碼的高清視頻傳輸系統(tǒng)研究
      MapWindowGIS插件機(jī)制及應(yīng)用
      基于Revit MEP的插件制作探討
      一種比較ASN.1碼流差異的方法
      基于梯度的CCSDS壓縮碼流控制算法研究
      阳高县| 大足县| 内江市| 新邵县| 水城县| 松阳县| 东乡| 丹棱县| 通榆县| 满洲里市| 宁南县| 宜阳县| 武平县| 佛坪县| 金溪县| 深州市| 富民县| 黑山县| 娄底市| 澳门| 抚州市| 司法| 姚安县| 江川县| 肃宁县| 商南县| 昭觉县| 景德镇市| 通州市| 泽普县| 北碚区| 克什克腾旗| 穆棱市| 临夏市| 马龙县| 将乐县| 高平市| 黑龙江省| 白水县| 南宫市| 巨野县|