国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DTV多節(jié)目傳送流實(shí)時(shí)多畫面播放軟件設(shè)計(jì)

2014-07-02 00:29:45褚晶輝劉子玉
電視技術(shù) 2014年21期
關(guān)鍵詞:視頻流碼流采集卡

閔 行,褚晶輝,劉子玉,俞 瀅

(天津大學(xué) 電子信息工程學(xué)院,天津 300072)

DTV多節(jié)目傳送流實(shí)時(shí)多畫面播放軟件設(shè)計(jì)

閔 行,褚晶輝,劉子玉,俞 瀅

(天津大學(xué) 電子信息工程學(xué)院,天津 300072)

設(shè)計(jì)了一種實(shí)時(shí)播放數(shù)字電視(DTV)傳送流的軟件,支持多達(dá)16路節(jié)目的解碼和多畫面顯示。該設(shè)計(jì)利用商用的數(shù)字電視傳送流采集卡將碼流輸入到計(jì)算機(jī)內(nèi)存中,然后利用FFmpeg開源庫(kù)實(shí)現(xiàn)對(duì)傳送流的解復(fù)用和多路視頻解碼,最后利用SDL開源庫(kù)將解碼后的圖像以多畫面的形式顯示在屏幕上。該設(shè)計(jì)提供了一種低成本的數(shù)字電視播出質(zhì)量監(jiān)測(cè)手段,軟件也具有較高的可移植性。

多節(jié)目傳送流;多畫面顯示;FFmpeg;SDL

隨著數(shù)字電視行業(yè)的迅猛發(fā)展,以及電視頻道的增多,對(duì)數(shù)字電視頻道播出質(zhì)量監(jiān)測(cè)的要求也越來越高。模擬電視時(shí)代,對(duì)于多路視頻監(jiān)測(cè)多采用CRT顯示器構(gòu)成的電視墻;在數(shù)字電視系統(tǒng)中,常見的方案也是將多個(gè)硬件解碼器的輸出接到電視墻上,此類方法的成本較高,不能充分發(fā)揮數(shù)字電視的優(yōu)勢(shì),而采集數(shù)字電視傳送流并直接進(jìn)行多路視頻解碼和顯示的設(shè)計(jì)方案具有較大的硬件成本優(yōu)勢(shì)和更大的靈活性[1]。

目前,我國(guó)的數(shù)字電視系統(tǒng)采用MPEG-2標(biāo)準(zhǔn)系統(tǒng)層規(guī)定的傳送流(Transport Stream,TS)格式對(duì)多路數(shù)字電視節(jié)目進(jìn)行復(fù)用形成基帶信號(hào)(多節(jié)目傳送流,MPTS)。本文實(shí)現(xiàn)的方案首先利用商用的數(shù)字電視傳送流采集卡將碼流輸入到計(jì)算機(jī)內(nèi)存中,再利用FFmpeg開源庫(kù)實(shí)現(xiàn)對(duì)傳送流的解復(fù)用和多路視頻解碼,利用SDL開源庫(kù)將解碼后的圖像以多畫面的形式顯示。

1 FFmpeg多路視頻解碼

FFmpeg是一款支持多種格式音頻與視頻播放、錄制、轉(zhuǎn)換和串流功能的自由軟件,它包含了目前領(lǐng)先的音頻、視頻編碼庫(kù)libavcodec,對(duì)大部分格式的視頻編碼都有良好的支持,VLC等多款開源播放器也都用到了FFm?peg。雖然FFmpeg是在Linux下開發(fā)的,對(duì)于GCC的依賴性非常強(qiáng),但是可以在Windows等大多數(shù)操作系統(tǒng)下編譯,保證了其良好的可移植性。本文設(shè)計(jì)主要使用FFm?peg進(jìn)行傳送流解復(fù)用和視頻解碼,具體過程如下:

在解碼之前,先調(diào)用av_register_all()初始化FFmpeg庫(kù),注冊(cè)所有容器格式和解碼器。初始化結(jié)構(gòu)體AVFor?matContext作為輸入輸出容器,將數(shù)字電視傳輸碼流保存到計(jì)算機(jī)的內(nèi)存中,調(diào)用avformat_open_input()讀取計(jì)算機(jī)內(nèi)存中TS碼流的頭部信息保存到容器中。結(jié)構(gòu)體AV?CodecContext是一個(gè)描述編解碼器上下文的數(shù)據(jù)結(jié)構(gòu),包含了眾多編解碼器需要的參數(shù)信息,例如,視音頻流的個(gè)數(shù)、時(shí)長(zhǎng)、比特率、文件名以及視音頻流數(shù)據(jù)本身等。將TS碼流中的視頻流與音頻流進(jìn)行分離,讀取包括視頻流個(gè)數(shù)在內(nèi)的視頻流信息,使用avcodec_open2()打開解碼器,avcodec_alloc_frame()為解碼幀分配內(nèi)存,不斷地從碼流中提取視頻流幀數(shù)據(jù),并調(diào)用FFmpeg的解碼核心函數(shù)avcodec_decode_video2()完成單線程的視頻解碼的全過程[2]。

考慮到要實(shí)現(xiàn)多畫面實(shí)時(shí)播放多個(gè)視頻流,本文采用了多線程的設(shè)計(jì),根據(jù)TS碼流中視頻流的個(gè)數(shù)確定線程數(shù)量,每個(gè)線程獨(dú)立完成一路視頻的解碼與顯示,提高系統(tǒng)資源的利用率。此外,在此之前還需要?jiǎng)?chuàng)建一個(gè)獨(dú)立的線程,以便將來自數(shù)字電視傳送流采集卡的TS碼流保存至計(jì)算機(jī)內(nèi)存中,供視頻解碼使用[3]。

2 SDL多畫面顯示

SDL是一套跨平臺(tái)支持多操作系統(tǒng)的開源多媒體開發(fā)庫(kù),是各種多媒體應(yīng)用與操作系統(tǒng)之間的接口。SDL共包括8個(gè)子系統(tǒng),在視頻處理子系統(tǒng)中,要顯示的視頻區(qū)域被當(dāng)作一塊視頻緩沖區(qū),也就是一塊內(nèi)存區(qū)域,SDL可以對(duì)該區(qū)域進(jìn)行讀寫。視頻緩沖區(qū)內(nèi)的最小單位是像素,SDL可以對(duì)視頻區(qū)域內(nèi)的任意一個(gè)像素做處理,包括改變其顏色等,緩沖區(qū)的數(shù)據(jù)更新后調(diào)用刷新函數(shù)刷新顯示,完成視頻播放的過程[4]。

本文設(shè)計(jì)了如圖1所示的共6種不同的畫面播放模式,用戶可以根據(jù)自身需求選擇單路播放或者多路播放,多路視頻播放也可根據(jù)需要選擇不同畫面、大小、主次播放,支持多達(dá)16路節(jié)目同時(shí)播放。用戶選定播放模式后,將其作為參數(shù)傳入主程序中,程序根據(jù)選擇的播放模式以及屏幕分辨率,計(jì)算多路視頻畫面的播放位置。

圖1 多畫面視頻播放模式

SDL的初始化過程主要包括以下步驟:調(diào)用SDL_CreateWindow()創(chuàng)建一個(gè)可以用來繪制的窗口,調(diào)用SDL_CreateRenderer()創(chuàng)建一個(gè)渲染器,調(diào)用SDL_Cre?ateTexture()創(chuàng)建紋理緩存(texture)。SDL初始化之后,就可以將FFmpeg解碼輸出的視頻幀數(shù)據(jù)作為紋理緩存的輸入,本文將視頻幀數(shù)據(jù)保存為YUV420P數(shù)據(jù)格式。根據(jù)選定的播放模式,計(jì)算每個(gè)視頻流在畫面中對(duì)應(yīng)的顯示位置,不斷地將視頻幀數(shù)據(jù)寫入紋理緩存并刷新顯示,就實(shí)現(xiàn)了多路視頻的多畫面播放。

3 軟件實(shí)現(xiàn)

本文設(shè)計(jì)的軟件工作流程如圖2所示。首先,將TS碼流路徑和播放模式作為參數(shù)傳遞給主程序,主程序?qū)S碼流路徑進(jìn)行判斷;當(dāng)路徑為0時(shí),主程序讀取通過數(shù)字電視傳輸流采集卡輸入的實(shí)時(shí)TS碼流,否則,讀取保存在本地或是某個(gè)服務(wù)器上的TS碼流文件。然后,對(duì)TS碼流進(jìn)行分析,分離出視頻流和音頻流,計(jì)算視頻流的個(gè)數(shù)。根據(jù)播放模式確定每個(gè)視頻流對(duì)應(yīng)的播放畫面位置。最后,為每一個(gè)視頻流創(chuàng)建一個(gè)獨(dú)立的視頻解碼和視頻顯示線程。在此過程中,F(xiàn)Fmpeg開源庫(kù)提供了傳送流的解復(fù)用和視頻流的解碼方法,SDL開源庫(kù)則提供了多畫面視頻顯示方法。

圖2 軟件工作流程

4 測(cè)試結(jié)果與分析

分別使用數(shù)字電視傳送流采集卡接收數(shù)字電視廣播基帶信號(hào)(即TS碼流)和用計(jì)算機(jī)硬盤上保存的TS文件對(duì)軟件的實(shí)時(shí)解碼和離線解碼功能進(jìn)行測(cè)試,支持6種預(yù)設(shè)的播放模式,其中3種模式下的測(cè)試結(jié)果如圖3所示。

實(shí)驗(yàn)表明,本文設(shè)計(jì)的軟件能夠?qū)崟r(shí)讀取數(shù)字電視傳送流采集卡輸入的TS碼流,或者讀取計(jì)算機(jī)存儲(chǔ)設(shè)備中的TS碼流文件,支持6種預(yù)設(shè)的播放模式,最多可以實(shí)現(xiàn)16路畫面同時(shí)播放。

圖3 模式2、模式5及模式6下的播放效果

5 結(jié)論

本文設(shè)計(jì)的數(shù)字電視傳送流多畫面播放軟件是在跨平臺(tái)的開源庫(kù)FFmpeg和SDL的基礎(chǔ)上實(shí)現(xiàn)的,經(jīng)過簡(jiǎn)單修改在Windows、Linux和Mac OS操作系統(tǒng)上都可以運(yùn)行,相對(duì)于文獻(xiàn)[5-7]提出的利用Microsoft公司的Direct?Show和DXVA等Windows平臺(tái)專有技術(shù)實(shí)現(xiàn)的系統(tǒng),其適應(yīng)性與擴(kuò)展性更強(qiáng),因此使用更加靈活,可滿足不同的用戶需求。在數(shù)字電視行業(yè)迅猛發(fā)展的背景下,對(duì)于數(shù)字電視多路視頻監(jiān)測(cè)的需求使得該設(shè)計(jì)具有良好的應(yīng)用前景。

致謝

[1]李欣時(shí),仲影.數(shù)字電視多畫面顯示及監(jiān)控系統(tǒng)的實(shí)現(xiàn)[J].有線電視技術(shù),2008(8):108-110.

[2]辛長(zhǎng)春,婁小平,呂乃光.基于FFmpeg的遠(yuǎn)程視頻監(jiān)控系統(tǒng)編解碼[J].電子技術(shù),2013(1):3-5.

[3]李科,李璐,蘭時(shí)勇.基于FFmpeg和SDL實(shí)現(xiàn)多路實(shí)時(shí)流變換及播放[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014(4):65-68.

[4]蔣鵬,劉玓.基于SDL庫(kù)的跨平臺(tái)多媒體應(yīng)用[J].福建電腦,2003(5):39-40.

[5] 尚青青,朱秀昌.高清視頻監(jiān)控中心的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2013,37(11):183-187.

[6]蘇俊峰,朱秀昌.基于DXVA的多路H.264高清視頻解碼器的實(shí)現(xiàn)[J].電視技術(shù),2011,35(18):30-33.

[7]高譽(yù)菊,呂鹍,張剛.Windows平臺(tái)上AVS視頻監(jiān)控客戶端的實(shí)現(xiàn)[J].電視技術(shù),2014,38(11):94-96.

Design of Real-time M ulti-screen Decoding Software for DTV M ulti-program Transport Stream

MIN Hang,CHU Jinghui,LIU Ziyu,YU Ying
(School of Electronic Information Engineering,Tianjin University,Tianjin 300072,China)

A software is designed to play DTV multi-program transport stream in real-time,which supports decoding up to 16 programs and multi-screen display.The software acquires transport stream into the computer memory with a commercial digital TV transport stream capture card,and then the stream is demultiplexed and decoded with the open-source library FFmpeg. Finally,the decoded pictures are displayed on the screen in a multi-screen layout with the open-source library SDL.The design provides a low-cost method to monitor the quality of digital television broadcasting,and the software is highly portable.

MPTS;multi-screen display;FFmpeg;SDL

TN949.1

A

閔 行,碩士生,研究方向?yàn)閿?shù)字多媒體技術(shù)和模式識(shí)別;

褚晶輝,博士,副教授,研究方向?yàn)閿?shù)字多媒體技術(shù)和模式識(shí)別;

劉子玉,碩士生,研究方向?yàn)閿?shù)字多媒體技術(shù)和模式識(shí)別;

俞 瀅,碩士生,研究方向?yàn)閿?shù)字多媒體技術(shù)和模式識(shí)別。

??健男

2014-08-11

【本文獻(xiàn)信息】閔行,褚晶輝,劉子玉,等.DTV多節(jié)目傳送流實(shí)時(shí)多畫面播放軟件設(shè)計(jì)[J].電視技術(shù),2014,38(21).

國(guó)家自然科學(xué)基金項(xiàng)目(61271069)

猜你喜歡
視頻流碼流采集卡
邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
高精度AD采集卡性能測(cè)試及評(píng)價(jià)方法研究
分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
數(shù)字電視TS碼流協(xié)議簡(jiǎn)要分析
視聽(2021年8期)2021-08-12 10:53:42
基于視頻流傳輸中的擁塞控制研究
面向數(shù)控機(jī)床的多通道傳感數(shù)據(jù)采集卡設(shè)計(jì)
并行高速采樣在地震物理模擬采集中的應(yīng)用
美國(guó)視頻流市場(chǎng)首現(xiàn)飽和征兆
PCI-e高速數(shù)據(jù)采集卡的驅(qū)動(dòng)與上位機(jī)軟件設(shè)計(jì)
電子器件(2015年5期)2015-12-29 08:43:12
一種比較ASN.1碼流差異的方法
株洲市| 曲阜市| 天峨县| 石门县| 莱阳市| 和静县| 鹤岗市| 大新县| 紫云| 团风县| 称多县| 民权县| 伊吾县| 娄烦县| 竹山县| 瓮安县| 黄陵县| 双辽市| 靖西县| 平顶山市| 广宁县| 四会市| 偃师市| 玉树县| 静乐县| 平顶山市| 哈尔滨市| 囊谦县| 原阳县| 和静县| 桐城市| 姚安县| 扶余县| 正安县| 花莲市| 奉化市| 博爱县| 邛崃市| 房产| 定边县| 乐山市|