當(dāng)前位置:首頁(yè) > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]首先對(duì)MPEG-2系統(tǒng)層協(xié)議進(jìn)行剖析,然后介紹了DirectShow的應(yīng)用領(lǐng)域和技術(shù)要點(diǎn),最后提出了一種基于DirectShow的多路視音頻播放技術(shù),并給出了主要模塊的設(shè)計(jì)方案

摘要:首先對(duì)MPEG-2系統(tǒng)層協(xié)議進(jìn)行剖析,然后介紹了DirectShow的應(yīng)用領(lǐng)域和技術(shù)要點(diǎn),最后提出了一種基于DirectShow的多路視音頻播放技術(shù),并給出了主要模塊的設(shè)計(jì)方案,以及DirectShow鏈路死鎖問(wèn)題的解決方法。這種方法應(yīng)用于多路電視節(jié)目的實(shí)時(shí)播放和節(jié)目素材的收集與整理之中,較傳統(tǒng)的單路節(jié)目播放和采集節(jié)約了硬件成本提高了工作效率。
關(guān)鍵字:DVB-S,DirectShow,MPEG-2,解復(fù)用

引言

DVB(數(shù)字視頻廣播,Digital Video Broadcasting)是歐洲標(biāo)準(zhǔn)組織提出的電視廣播體系。目前我國(guó)已經(jīng)上星的多家省級(jí)電視臺(tái)均采用了其中的DVB-S(DVB衛(wèi)星傳播)標(biāo)準(zhǔn)。DVB-S的信號(hào)傳輸屬于典型的多路單載波(MCPC)模型,每個(gè)載波可以承載多路各不相同的電視節(jié)目。傳統(tǒng)采用數(shù)字衛(wèi)星接收系統(tǒng),只能對(duì)DVB-S信號(hào)中的某一路節(jié)目進(jìn)行播放和采集。本文提出了一種在通用接收機(jī)條件下基于DirectShow技術(shù)的對(duì)DVB-S傳輸流進(jìn)行解復(fù)用,提取并播放其中的多路視頻節(jié)目的設(shè)計(jì)方案,實(shí)現(xiàn)了單監(jiān)視器條件下對(duì)多路電視節(jié)目的播放。同時(shí)本文所討論的技術(shù)對(duì)節(jié)目素材收集、網(wǎng)絡(luò)視頻點(diǎn)播以及硬盤錄像機(jī)等多媒體應(yīng)用具有重要的借鑒意義。無(wú)線SOC開(kāi)發(fā)平臺(tái)499元 S3C44B0 ARM7開(kāi)發(fā)板378元 S3C2410 ARM9開(kāi)MPEG-2系統(tǒng)層協(xié)議剖析

DVB-S采用MPEG-2作為復(fù)用傳輸和視頻編碼協(xié)議。MPEG-2標(biāo)準(zhǔn)(ISO/IEC 13818)是運(yùn)動(dòng)圖像專家組MPEG(Moving Picture Experts Group)于1994年推出的編碼標(biāo)準(zhǔn)。運(yùn)用MPEG-2壓縮技術(shù)既可以獲得比較好的壓縮效果,又能夠保持高清晰度的活動(dòng)圖像,因此MPEG-2廣泛應(yīng)用于數(shù)字視頻廣播和數(shù)字多媒體領(lǐng)域。

MPEG-2協(xié)議主要分為系統(tǒng)、視頻和音頻三個(gè)部分。MPEG-2的系統(tǒng)層協(xié)議描述了多路數(shù)據(jù)的復(fù)用方式,并規(guī)定了數(shù)據(jù)傳輸?shù)母袷健?/P>

2.1  傳輸流結(jié)構(gòu)

MPEG-2系統(tǒng)層定義了兩種數(shù)據(jù)傳輸方式:傳輸流(TS,Transport Stream)和節(jié)目流(PS,Program Stream)。前者是針對(duì)那些容易發(fā)生錯(cuò)誤的環(huán)境而設(shè)計(jì),例如通過(guò)衛(wèi)星信道進(jìn)行傳輸?shù)腄VB-S,后者則是針對(duì)錯(cuò)誤較少的環(huán)境而設(shè)計(jì),例如DVD光盤等。傳輸流是一種面向分組的多路復(fù)用流:基本數(shù)據(jù)流(ES)進(jìn)行打包成為PES,再經(jīng)系統(tǒng)復(fù)用生成TS數(shù)據(jù),最后打包成固定幀長(zhǎng)(188字節(jié))的TS包進(jìn)行傳輸。每一個(gè)TS包只包含一種ES(壓縮視頻、音頻,或IP數(shù)據(jù)等)。系統(tǒng)層使用一個(gè)13比特值作為每個(gè)包的標(biāo)識(shí)符,稱為PID。在一道傳輸流中PID與ES是一一對(duì)映的關(guān)系。TS包的幀結(jié)構(gòu)如圖1所示。

圖1

2.2       PSI信息和PID映射關(guān)系

PSI(節(jié)目詳細(xì)信息,Program Specific Information)包含了多路節(jié)目的復(fù)用信息,它是解復(fù)用操作的依據(jù)。PSI包括節(jié)目關(guān)聯(lián)表(PAT)、節(jié)目映射表(PMT)、網(wǎng)絡(luò)信息表(NIT)以及條件訪問(wèn)表(CAT)等。

PAT的PID固定的為0x0000,它定義了傳輸流中特定序號(hào)的節(jié)目與相關(guān)的傳輸流分組的對(duì)應(yīng)關(guān)系。PMT提供了節(jié)目號(hào)碼與組成節(jié)目的ES PID的映射關(guān)系。NIT屬于私有分段,通常包括用戶選擇的服務(wù)、通道頻率等映射以及該路節(jié)目的供應(yīng)商和節(jié)目名稱等信息。NIT的PID系統(tǒng)層未作限定,因此理論上任何有效的PID值都可能作為NIT的PID。CAT的PID固定為0x0001,它出現(xiàn)在傳輸流中有加密數(shù)據(jù)的情況下。CAT描述了條件訪問(wèn)系統(tǒng)的類型,和其它用戶私有信息。

DirectShow簡(jiǎn)介

DirectShow是微軟公司DirectX框架的一部分。DirectShow的實(shí)現(xiàn)是基于COM(組件對(duì)象模型)的,因此具有良好的可開(kāi)發(fā)性和可復(fù)用性。

DirectShow側(cè)重于多媒體數(shù)據(jù)的處理。多媒體數(shù)據(jù)具有數(shù)據(jù)量大、音像同步要求苛刻、媒體格式眾多等特點(diǎn)。DirectShow框架提供了對(duì)顯卡和聲卡等硬件的完整封裝,開(kāi)發(fā)者可以不必考慮硬件的工作原理以及驅(qū)動(dòng)編程的具體實(shí)現(xiàn)細(xì)節(jié)。另一方面,DirectShow組件之間的相對(duì)獨(dú)立性使開(kāi)發(fā)者可以專注于處理算法的實(shí)現(xiàn)而無(wú)需過(guò)多考慮組件之間的數(shù)據(jù)傳輸問(wèn)題,因此開(kāi)發(fā)者通過(guò)編寫(xiě)相對(duì)簡(jiǎn)潔的代碼便可高效地完成較為復(fù)雜的多媒體處理。

3.1 Filter鏈路


Filter是DirectShow中最基本的組成部分,它是完成某個(gè)特定功能的COM組件。Filter依次連接起來(lái),構(gòu)成了Filter鏈路。DirectShow通過(guò)一個(gè)稱為Filter Graph Manager(鏈路圖管理器)的COM對(duì)象管理整個(gè)Filter鏈路。應(yīng)用程序通過(guò)Filter Graph Manager來(lái)對(duì)鏈路的狀態(tài)進(jìn)行控制,如播放、暫停或停止等。按照功能,F(xiàn)ilter可以分為Source Filter、Transform Filter、Rendering Filter三種類型。

Source Filter用于獲取數(shù)據(jù)。數(shù)據(jù)可以來(lái)自文件也可以是實(shí)時(shí)的數(shù)據(jù)源如網(wǎng)絡(luò)、數(shù)據(jù)采集卡等。

Transform Filter接收Source Filter傳送來(lái)的數(shù)據(jù),對(duì)其進(jìn)行處理,比如解復(fù)用操作、音像數(shù)據(jù)的分離或編碼/解碼等。

Rendering Filter的主要功能是將數(shù)據(jù)送往顯卡、聲卡進(jìn)行多媒體演示或者輸出到文件進(jìn)行存儲(chǔ)。

3.2       工作模式

DirectShow框架定義了兩種工作模式:推模式(Push Mode)和拉模式(Pull Mode)。

推模式下,數(shù)據(jù)被Source Filter主動(dòng)推向與其相連的Transform Filter,后者再將處理過(guò)的數(shù)據(jù)推向下行Filter。推模式通常使用在實(shí)時(shí)數(shù)據(jù)情況下。對(duì)于實(shí)時(shí)數(shù)據(jù)源,數(shù)據(jù)傳輸速率可能不是恒定的(例如網(wǎng)絡(luò)媒體傳輸、視頻采集卡等),因此采用推模式Source Filter可以根據(jù)數(shù)據(jù)源的實(shí)際狀況決定如何將數(shù)據(jù)傳給下行Filter。

拉模式下Source Filter被動(dòng)的提供數(shù)據(jù),與其相連的Transform Filter創(chuàng)建一個(gè)數(shù)據(jù)線程主動(dòng)的向Source Filter索取數(shù)據(jù),有一個(gè)“拉”的過(guò)程。工作在拉模式的Filter一般采用異步讀取數(shù)據(jù)的方式。拉模式通常應(yīng)用于本地文件播放以及媒體編輯等。

4          設(shè)計(jì)方案

4.1       原理及流程

衛(wèi)星信號(hào)經(jīng)天線接收、放大、變頻后以中頻信號(hào)的形式送入通用接收機(jī)。通用接收機(jī)對(duì)信號(hào)進(jìn)行解調(diào)和信道編碼的解碼。輸出的傳輸流數(shù)據(jù)流,首先經(jīng)過(guò)PSI分析得到完整的PID映射關(guān)系,然后根據(jù)節(jié)目關(guān)聯(lián)表信息將其中的視音頻數(shù)據(jù)分離送往解碼器,最終在顯示終端上播放。工作流程如圖2所示。


圖2

從數(shù)據(jù)采集、分離到顯示,可以在一條Filter鏈路上實(shí)現(xiàn):Source Filter獲得接收機(jī)輸出的傳輸流數(shù)據(jù);解復(fù)用Filter實(shí)現(xiàn)分析PSI、解復(fù)用功能,并將視頻和音頻數(shù)據(jù)送往解碼器Filter。

完整的Filter鏈路圖如圖3所示。

 

圖3

圖中每一個(gè)方框表示一個(gè)Filter。Source Filter沒(méi)有輸入并且只有一個(gè)輸出。與之相連的是解復(fù)用Filter,它有一個(gè)輸入和多個(gè)視頻、音頻輸出。視頻數(shù)據(jù)被送往MPEG-2解碼器Filter,音頻數(shù)據(jù)送往音頻解碼器Filter。解碼器的輸出連接到了Render Filter。

4.2       Filter工作模式的選擇

處理微機(jī)通過(guò)高速數(shù)據(jù)采集卡獲得通用接收機(jī)的輸出,因此對(duì)于Filter鏈路來(lái)說(shuō),數(shù)據(jù)源是一種實(shí)時(shí)源。所以選擇推模式作為整個(gè)Filter鏈路的工作模式。

5          主要模塊的設(shè)計(jì)和實(shí)現(xiàn)難點(diǎn)

5.1       Source Filter

Source Filter封裝了采集卡的接口函數(shù),采用雙緩沖工作方式,通過(guò)輪詢察看緩沖區(qū)是否已滿。當(dāng)緩沖區(qū)滿時(shí)將數(shù)據(jù)送往與之相連的解復(fù)用Filter。

5.2       解復(fù)用Filter

解復(fù)用Filter是整個(gè)Filter鏈路的核心部分。它的功能是分析傳輸流的PSI,建立完整的PDI映射關(guān)系;然后從傳輸流中分離出每路節(jié)目的視頻和音頻數(shù)據(jù),將它們送往相應(yīng)的視頻和音頻解碼器,同時(shí)接收應(yīng)用程序的控制信息。解復(fù)用Filter對(duì)每一個(gè)傳輸流包的處理過(guò)程如圖4所示。

圖4

5.3 解決鏈路死鎖問(wèn)題


Filter鏈路通常需要一個(gè)傳輸線程。在推模式下,傳輸線程通常由Source Filter創(chuàng)建,數(shù)據(jù)被線程推向解復(fù)用Filter,經(jīng)處理生成的視頻和音頻數(shù)據(jù)被送往解碼器,最后在終端上播放出來(lái)。整個(gè)過(guò)程都在單線程內(nèi)完成。

在多路輸出情況下,一般的推模式單線程模型將會(huì)導(dǎo)致鏈路死鎖。解決死鎖問(wèn)題的關(guān)鍵是為每一路視頻或音頻輸出創(chuàng)建專門的傳輸線程,并且線程的創(chuàng)建應(yīng)該在解復(fù)用Filter內(nèi)完成而不是在Source Filter內(nèi)(因?yàn)镾ource Filter只有一個(gè)傳輸流輸出)。

在DirectShow SDK中,可以通過(guò)使用COutputQueue對(duì)象來(lái)實(shí)現(xiàn)多線程傳輸,最終解決死鎖問(wèn)題。方法是在解復(fù)用Filter中聲明一個(gè)COutputQueue對(duì)象,在每次啟動(dòng)傳輸時(shí)調(diào)用COutputQueue的Receive(IMediaSample* pSample)函數(shù)。此時(shí)對(duì)象會(huì)自動(dòng)生成一個(gè)傳輸線程,并將其加入到自身的線程隊(duì)列中,當(dāng)線程完成時(shí)將其從隊(duì)列中清除。

5.3       Video Mixing Renderer9

Video Mixing Renderer9(VMR9)是DirectX9新添加的組件。它使用了Direct3D9技術(shù),充分利用了顯卡專有的圖形處理能力,并且在做視頻的合成和顯示時(shí)不占用系統(tǒng)CPU資源。使用VMR9可以高效的完成多路視頻的播放。如果使用傳統(tǒng)的Video Render Filter,在多視頻顯示條件下,必須為鏈路添加多個(gè)Render Filter。而VMR9最多接收十六個(gè)視頻輸入,在多路播放時(shí)可以將每一路視頻設(shè)置在窗口的不同區(qū)域來(lái)顯示,還能夠?qū)崿F(xiàn)多個(gè)視頻或圖片的疊加,例如在節(jié)目中加入動(dòng)態(tài)字幕或臺(tái)標(biāo)。

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

PC機(jī)配置

l         操作系統(tǒng):Windows2000 Professional

l         CPU:P4 2.4GHz

l         內(nèi)存1G Byte

l         顯卡:主板集成,顯存128M Byte

信號(hào)參數(shù):

l         衛(wèi)星參數(shù):泛美8號(hào),166°E

l         極化方式:垂直

l         下行頻率:3836MHz

l         符碼率:22000波特

l         節(jié)目提供商:TVBS

l         頻道數(shù)目:9(加密頻道數(shù)目6,非加密頻道數(shù)目3)

圖5是顯示界面,圖中正在播放三路非加密節(jié)目。

圖5

7          結(jié)束語(yǔ)

本文作者的創(chuàng)新點(diǎn):使用DirectShow技術(shù),結(jié)合通用接收機(jī),解決了數(shù)字衛(wèi)星接收單監(jiān)視器系統(tǒng)無(wú)法播放多路節(jié)目的問(wèn)題,降低了硬件成本,對(duì)于非專業(yè)條件下的多媒體節(jié)目的播放(監(jiān)控)和素材的收集具有實(shí)用價(jià)值。另一方面,使用DirectShow還可以實(shí)現(xiàn)其它的功能,例如使用DES(DirectShow Editing Services)可以實(shí)現(xiàn)對(duì)多媒體文件的非線性編輯等。理論上還可以將本文的設(shè)計(jì)應(yīng)用在網(wǎng)絡(luò)環(huán)境中:網(wǎng)絡(luò)客戶端可以通過(guò)PSI信息,選擇播放或錄制感興趣的電視節(jié)目從而實(shí)現(xiàn)網(wǎng)絡(luò)視頻點(diǎn)播功能。

參考文獻(xiàn)

1、    ISO/IEC 13818-1(MPEG-2 System),ISO/IEC 13818-2(MPEG-2 Video),ISO/IEC 13818-3(MPEG-2 Audio)
2、    Microsoft, DirectX 9.0 Programmer's Reference,2002。
3、    陸其明,DirectShow開(kāi)發(fā)指南,清華大學(xué)出版社,2003
4、    史京玲,劉旺開(kāi),白濤.VC環(huán)境下監(jiān)控軟件流程圖界面的開(kāi)發(fā).微計(jì)算機(jī)信息,2004年20卷第4期

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉