中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于DirectShow的MPEG-4視頻傳輸系統(tǒng)的研究與實(shí)現(xiàn)

        基于DirectShow的MPEG-4視頻傳輸系統(tǒng)的研究與實(shí)現(xiàn)

        作者: 時(shí)間:2009-03-24 來(lái)源:網(wǎng)絡(luò) 收藏

        接收端的思路如下:通過(guò)一個(gè)接收Filter接收發(fā)送端發(fā)送的數(shù)據(jù),然后再用Divx Decoder Filter對(duì)接收到的數(shù)據(jù)進(jìn)行解碼。最后用Video Renderer把解碼后的數(shù)據(jù)播放出來(lái)。其Filter Graph如圖2所示:

        本文引用地址:http://www.antipu.com.cn/article/167017.htm


        圖2 接收端的Filter Graph
        3.1 數(shù)據(jù)采集及編碼的
        3.1.1 采集Filter Graph的
        采集應(yīng)用的Filter Graph一般比較復(fù)雜,而直接使用Filter Graph Manager上的IGraphBuilder接口構(gòu)建這種Filter Graph,有時(shí)候難度又很大。為此,特別提供了一個(gè)輔助組件Capture Graph Builder,來(lái)簡(jiǎn)化這種Filter Graph的創(chuàng)建。
        首先是創(chuàng)建Filter Graph Manager 組件,核心代碼如下:

        3.1.2 加入采集Filter

        3.1.3加入編碼器Filter
        這里我們采用Divx 提供的開(kāi)源編碼Filter。安裝DivX.Pro.v5.1.1后會(huì)自動(dòng)安裝Divx的編碼器Filter和解碼器Filter(注:解碼器Filter在接收端要用到)。在程序中加入Divx的編碼器Filter,實(shí)現(xiàn)思想是在Video Compressors目錄下枚舉到名稱為DivX Pro(tm) 5.1.1 Codec的Filter項(xiàng)后,把它加入到Filter Graph中即可。
        3.2 數(shù)據(jù)的發(fā)送和接收
        3.2.1 數(shù)據(jù)的發(fā)送Filter的實(shí)現(xiàn)
        數(shù)據(jù)的發(fā)送要開(kāi)發(fā)一個(gè)發(fā)送Filter,為了編程上的方便,這里采用程序內(nèi)Filter的形式來(lái)實(shí)現(xiàn)。即用類的形式而不是編寫(xiě)一個(gè)成一個(gè)后綴為ax的組件注冊(cè)后再使用。這里我們定義一個(gè)繼承自CBaseFilter的類CFilterMpeg4Sender。這個(gè)類必須實(shí)現(xiàn)以下功能[3]:
        (1) 在類中定義CFilterMpeg4Sender上的Pin的實(shí)例mInputPin。
        (2) 實(shí)現(xiàn)繼承自CBaseFilter::GetPin,用于返回Filter上各個(gè)Pin的對(duì)象指針。
        (3) 實(shí)現(xiàn)繼承自CBaseFilter::GetPin,用于返回Filter上各個(gè)Pin的數(shù)量。
        定義一個(gè)繼承自CRenderedInputPin的類CMpeg4InputPin,用于實(shí)現(xiàn)CFilterMpeg4Sender上的輸入pin,發(fā)送Filter通過(guò)該輸入pin接收編碼Filter輸出的數(shù)據(jù),然后按一定的規(guī)則發(fā)送。
        這個(gè)類必須實(shí)現(xiàn)以下功能[2]:
        (1) 重寫(xiě)方法EndOfStream。
        (2) 實(shí)現(xiàn)IPin::BeginFlush和IPin::EndFlush兩個(gè)函數(shù)。
        (3) 重寫(xiě)方法CBasePin::CheckMediaType進(jìn)行連接時(shí)媒體類型的檢查。
        (4) 重寫(xiě)方法CBasePin:: Receive(),接收Sample并發(fā)送
        3.2.2 數(shù)據(jù)的接收Filter的實(shí)現(xiàn)
        數(shù)據(jù)的接收其實(shí)是要編寫(xiě)一個(gè)Source Filter, 這個(gè)Source Filter名稱為CFilterMpeg4Receiver,也繼承自CBaseFilter。這跟發(fā)送Filter的實(shí)現(xiàn)有些類似,有一點(diǎn)需要注意的是該Filter輸出的MediaType的設(shè)置。
        Char MediaType[]=//媒體數(shù)據(jù)類型,通過(guò)在發(fā)送端把媒體類型寫(xiě)到一個(gè)文件中而得到然后通過(guò)語(yǔ)句:CFilterMpeg4Receiver::SetupMediaType((char *)MediaType,88)設(shè)置輸出數(shù)據(jù)的MediaType。
        CFilterMpeg4Receiver::SetupMediaType再調(diào)用CMpeg4OutPin::SetupMediaType()設(shè)置、接收到的媒體數(shù)據(jù)的格式,
        3.2.3 數(shù)據(jù)的網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)


        數(shù)據(jù)的發(fā)送我們采用開(kāi)源代碼JRTPLIB【6】提供的RTP協(xié)議棧。最新的JRTPLIB對(duì)RFC3550的實(shí)現(xiàn)進(jìn)行了封裝,開(kāi)發(fā)人員只要初步了解RTP協(xié)議就可以開(kāi)發(fā)出高質(zhì)量的音傳輸程序。使用JRTPLIB時(shí),只需要通過(guò)繼承RTPSession類,再重新以下幾個(gè)函數(shù)就可以實(shí)現(xiàn)數(shù)據(jù)的接收。



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉