青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 298  文章 - 377  trackbacks - 0
<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

本文簡單介紹了DirectShow技術(shù),研究了利用DirectShow實(shí)現(xiàn)視頻采集、壓縮和網(wǎng)絡(luò)傳輸技術(shù)。并利用第三方提供的編解碼器實(shí)現(xiàn)了MPEG-4視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸系統(tǒng),在該系統(tǒng)中利用RTP協(xié)議進(jìn)行視頻數(shù)據(jù)傳輸,同時(shí)實(shí)現(xiàn)了遠(yuǎn)端幀率的控制。
關(guān)鍵詞 視頻; 采集; 壓縮; DirectShow; MPEG-4,RTP

1 引言
    近年來,隨著國民經(jīng)濟(jì)的發(fā)展,社會各個(gè)部門對于視頻監(jiān)視系統(tǒng)的需求越來越多。但目前的很多監(jiān)視系統(tǒng)都跟具體的硬件相關(guān),必須要具體的采集卡的支持才能實(shí)現(xiàn)。所以有必要開發(fā)一種具有通用性的視頻監(jiān)視系統(tǒng),用普通的攝像頭就能實(shí)現(xiàn)視頻的采集。
    基于DirectShow的開發(fā)能很靈活地控制音視頻的效果,所以選擇DirectShow這種可擴(kuò)展性好的技術(shù)做開發(fā)對以后的應(yīng)用升級很有幫助。此外, 為了實(shí)現(xiàn)流媒體傳輸控制的策略,流媒體的傳輸和回放也是應(yīng)解決的問題之一。由Microsoft提供的DirectShow技術(shù)基于組件對象模型技術(shù),支 持寬松的格式變化,提供高品質(zhì)的多媒體流回放。利用它可以在普通微機(jī)中實(shí)現(xiàn)流媒體的客戶端處理,并可以提高系統(tǒng)的通用性和可擴(kuò)展性。
    對于視頻數(shù)據(jù)的傳輸,壓縮率是一個(gè)必須考慮到的因素。MPEG-4是由ISO和IEC的MPEG組制定的一個(gè)關(guān)于活動(dòng)圖像和聲音的編碼國際標(biāo)準(zhǔn)。它在基于 內(nèi)容的交互性、壓縮率、通用訪問能力等方面提供了一系列新的或改進(jìn)的功能。MPEG-4視頻在提供較好的圖像質(zhì)量的同時(shí)擁有較高的壓縮率,適合于作為傳輸 的圖像壓縮標(biāo)準(zhǔn)。

2  相關(guān)技術(shù)

2.1 DirectShow技術(shù)簡介
     DirectShow是Microsoft為開發(fā)高性能多媒體應(yīng)用而開發(fā)的底層應(yīng)用程序接口(API),它是DirectX家族的核心成員之一。 DirectShow自身是通過一種系統(tǒng)內(nèi)置的或程序員開發(fā)的過濾器(Filter)來控制和處理多媒體數(shù)據(jù)的體系結(jié)構(gòu)。該體系結(jié)構(gòu)定義了如何處理和控制 過濾器內(nèi)部及相互之間的多媒體數(shù)據(jù)流。每個(gè)過濾器都有輸入或輸出針(Pin), 或兩者都有。
    過濾器(Filter)是DirectShow的基本組成部分,是Filter Graph(過濾器圖)中最小的功能模塊,DirectShow將多媒體數(shù)據(jù)的處理分離成不同的步驟,這些不同的步驟由相應(yīng)的Filter去處理。這樣我 們可以把不同的過濾器搭配在一起達(dá)到我們要求的來處理多媒體數(shù)據(jù)。過濾器根據(jù)實(shí)現(xiàn)功能的不同大致可分為3類:
(1) 源過濾器(Source Filters)。源過濾器負(fù)責(zé)得到原始媒體數(shù)據(jù)。這些媒體數(shù)據(jù)的來源包括本地硬盤或網(wǎng)絡(luò)上的媒體文件、各種采集卡等。
(2) 轉(zhuǎn)換過濾器(Transform Filters)。轉(zhuǎn)換過濾器的任務(wù)是處理從其他過濾器中接收的數(shù)據(jù),經(jīng)過一定的處理后再傳遞給下一個(gè)過濾器。編解碼器就是典型的轉(zhuǎn)換過濾器。
(3) 表現(xiàn)過濾器(Rendering Filters)。表現(xiàn)過濾器對接收到的數(shù)據(jù)進(jìn)行最后的處理。它做的工作有:把媒體數(shù)據(jù)保存為文件、將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)、顯示視頻、回放音頻等[1]。
    在DirectShow 系統(tǒng)之上是應(yīng)用程序(Application) 。應(yīng)用程序要按照程序所要實(shí)現(xiàn)的功能建立起相應(yīng)的Filter Graph ,然后借助于Filter Graph Manager 來控制整個(gè)數(shù)據(jù)的處理過程。DirectShow 能在Filter Graph 運(yùn)行的時(shí)候接收到各種事件,并通過消息的方式發(fā)送到應(yīng)用程序。這樣就實(shí)現(xiàn)了應(yīng)用程序與DirectShow 系統(tǒng)之間的交互。
2.2 RTP/RTCP協(xié)議介紹
    實(shí)時(shí)傳輸協(xié)議RTP(Realtime Transport Protocol)是針對Internet 上多媒體數(shù)據(jù)流的一個(gè)傳輸協(xié)議,1996 年由IETF( Internet 工程任務(wù)組) 的AVT小組作為RFC1889 發(fā)布AVT小組后來對該文檔進(jìn)行了不斷改進(jìn),于2003年7月提出了代替RFC1889的RFC3550。RTP充分體現(xiàn)了應(yīng)用層分幀這一現(xiàn)代通信協(xié)議的 設(shè)計(jì)思想,允許其用戶了解、調(diào)整甚至制定連續(xù)媒體的打包方案,該協(xié)議被廣泛用于VoIP、視頻等實(shí)時(shí)媒體的傳送。RTP 協(xié)議包括RTP 和RTCP(RTP 控制協(xié)議) 兩個(gè)關(guān)系十分密切的子協(xié)議:
    (1)  RTP協(xié)議-傳輸具有實(shí)時(shí)特性的數(shù)據(jù);
    (2)RTCP協(xié)議-監(jiān)測QoS 和傳送參與傳輸者的信息。
    RTP(實(shí)時(shí)傳輸協(xié)議) 通常工作在UDP的上層,從上層接收多媒體信息碼流(如MPEG-4視頻) ,組裝成RTP 數(shù)據(jù)包,然后發(fā)送給下層UDP ,相當(dāng)于OSI 的會話層,提供同步和排序服務(wù)。故RTP 協(xié)議適用于傳送連續(xù)性強(qiáng)的數(shù)據(jù),如視頻、音頻等,并對網(wǎng)絡(luò)引起的時(shí)延差錯(cuò)有一定的自適應(yīng)能力。RTCP 為實(shí)時(shí)控制協(xié)議,用于管理控制信息,如監(jiān)視網(wǎng)絡(luò)的延時(shí)和帶寬,一旦所傳輸?shù)亩嗝襟w信息的帶寬發(fā)生變化,接收端則通知發(fā)送端,廣播符號化識別碼和編碼參數(shù), 達(dá)到控制傳輸質(zhì)量的目的。此外,如果底層網(wǎng)絡(luò)支持多點(diǎn)傳播的話,RTP 還支持使用多點(diǎn)傳播向多個(gè)目的端點(diǎn)發(fā)送數(shù)據(jù)。
    RTP協(xié)議具有如下特點(diǎn)[5]:
(1)靈活性
    RTP協(xié)議的數(shù)據(jù)報(bào)文和控制報(bào)文使用不同的端口,數(shù)據(jù)流和控制流分離,這樣大大地提高了協(xié)議的靈活性,處理也簡單。
(2)支持多播
    如果下層網(wǎng)路支持,可以支持多播。
(3)可擴(kuò)展性
    RTP協(xié)議通常為一個(gè)具體的應(yīng)用提供服務(wù),通過一個(gè)具體的應(yīng)用進(jìn)程實(shí)現(xiàn),而不作為OSI體系結(jié)構(gòu)中單獨(dú)的一層來實(shí)現(xiàn),RTP只提供協(xié)議框架,開發(fā)者可以根據(jù)應(yīng)用的具體要求對協(xié)議進(jìn)行充分的擴(kuò)展。

3 關(guān)鍵技術(shù)的實(shí)現(xiàn)

    該系統(tǒng)的發(fā)送端實(shí)現(xiàn)思路如下:用USB攝像頭采集數(shù)據(jù),用Divx 5.1.1 Codec 對采集到的數(shù)據(jù)進(jìn)行MPEG-4的編碼,然后連到一個(gè)發(fā)送Filter把編碼后的數(shù)據(jù)發(fā)送出去。其Filter Graph如圖1所示 :

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

                      圖2   接收端的Filter Graph
3.1  數(shù)據(jù)采集及編碼的實(shí)現(xiàn)
3.1.1 采集Filter Graph的實(shí)現(xiàn)

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

3.1.2 加入采集Filter

3.1.3加入MPEG-4編碼器Filter
    這里我們采用Divx 提供的開源編碼Filter。安裝DivX.Pro.v5.1.1后會自動(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ā)送要開發(fā)一個(gè)發(fā)送Filter,為了編程上的方便,這里采用程序內(nèi)Filter的形式來實(shí)現(xiàn)。即用類的形式而不是編寫一個(gè)成一個(gè)后綴為ax的組件 注冊后再使用。這里我們定義一個(gè)繼承自CBaseFilter的類CFilterMpeg4Sender。這個(gè)類必須實(shí)現(xiàn)以下功能[3]:
   (1) 在類中定義CFilterMpeg4Sender上的Pin的實(shí)例mInputPin。
   (2) 實(shí)現(xiàn)繼承自CBaseFilter::GetPin,用于返回Filter上各個(gè)Pin的對象指針。
   (3) 實(shí)現(xiàn)繼承自CBaseFilter::GetPin,用于返回Filter上各個(gè)Pin的數(shù)量。
    定義一個(gè)繼承自CRenderedInputPin的類CMpeg4InputPin,用于實(shí)現(xiàn)CFilterMpeg4Sender上的輸入pin,發(fā)送Filter通過該輸入pin接收編碼Filter輸出的數(shù)據(jù),然后按一定的規(guī)則發(fā)送。
    這個(gè)類必須實(shí)現(xiàn)以下功能[2]:
   (1) 重寫方法EndOfStream。
   (2) 實(shí)現(xiàn)IPin::BeginFlush和IPin::EndFlush兩個(gè)函數(shù)。
   (3) 重寫方法CBasePin::CheckMediaType進(jìn)行連接時(shí)媒體類型的檢查。
   (4) 重寫方法CBasePin:: Receive(),接收Sample并發(fā)送
3.2.2 數(shù)據(jù)的接收Filter的實(shí)現(xiàn)
數(shù) 據(jù)的接收其實(shí)是要編寫一個(gè)Source Filter, 這個(gè)Source Filter名稱為CFilterMpeg4Receiver,也繼承自CBaseFilter。這跟發(fā)送Filter的實(shí)現(xiàn)有些類似,有一點(diǎn)需要注意的 是該Filter輸出的MediaType的設(shè)置。
     Char  MediaType[]=//媒體數(shù)據(jù)類型,通過在發(fā)送端把媒體類型寫到一個(gè)文件中而得到然后通過語句: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ā)送我們采用開源代碼JRTPLIB【6】提供的RTP協(xié)議棧。最新的JRTPLIB對RFC3550的實(shí)現(xiàn)進(jìn)行了封裝,開發(fā)人員只要初步了解 RTP協(xié)議就可以開發(fā)出高質(zhì)量的音視頻傳輸程序。使用JRTPLIB時(shí),只需要通過繼承RTPSession類,再重新以下幾個(gè)函數(shù)就可以實(shí)現(xiàn)視頻數(shù)據(jù)的 接收。


     在網(wǎng)絡(luò)帶寬比較低的情況下(如十幾KBps),數(shù)據(jù)丟幀現(xiàn)象比較嚴(yán)重,這對于圖像質(zhì)量有很大的影響。我們采用拆幀(拆成1400個(gè)字節(jié))以后再發(fā)送的方法,來降低丟幀率。接收端收到數(shù)據(jù)后,再把屬于同一視頻幀的數(shù)據(jù)再組起來。
    網(wǎng)絡(luò)發(fā)送接收程序流程圖如圖3所示:

圖3  網(wǎng)絡(luò)發(fā)送接收程序流程圖


    對程序流程圖的說明如下:
(1)發(fā)送端拆幀的算法如下:

   然后把屬于同一視頻幀的數(shù)據(jù)組好,發(fā)送到解碼Filter。
   經(jīng)過測試(在CDMA1.X網(wǎng)絡(luò)下),采用拆幀方法傳輸視頻數(shù)據(jù)比直接發(fā)送丟包率更低,傳輸質(zhì)量有了很大的提高。
3.3 數(shù)據(jù)解碼及回放的實(shí)現(xiàn)
    解碼Filter使用的是Divx提供的開源解碼器,在接收Filter的后面接上該解碼Filter即可,最后接上Renderer Filter就可以把接收到的數(shù)據(jù)回放出來。
3.4 實(shí)現(xiàn)幀率控制功能
    通過在采集設(shè)備和編碼Filter(DivX Pro(tm) 5.1.1 Codec)之間加入一個(gè)幀率控制Filter來實(shí)現(xiàn)幀率的控制,該Filter相當(dāng)于一個(gè)視頻幀數(shù)計(jì)數(shù)器,每接收到一幀,并不立即把該幀發(fā)給下游的編碼 Filter,而是把計(jì)數(shù)器的值加1,當(dāng)計(jì)數(shù)器的值達(dá)到最大值時(shí)才把當(dāng)前收到的幀發(fā)出去。在接收端發(fā)控制幀率命令給采集端可以很方便的實(shí)現(xiàn)幀率的遠(yuǎn)端控 制。
    程序片斷如下:

    加了幀率控制Filter的發(fā)送端 Filter Graph 如圖4所示:


圖4   實(shí)現(xiàn)了幀率控制的Filter Graph 

4 總結(jié)

    該系統(tǒng)采用了DirectShow技術(shù)實(shí)現(xiàn)了MPEG-4視頻數(shù)據(jù)的傳輸,視頻數(shù)據(jù)的傳輸采用了RTP協(xié)議。而且還實(shí)現(xiàn)了遠(yuǎn)端幀率的控制,該系統(tǒng)可以很方 便的移植到未來3G網(wǎng)絡(luò)的圖像傳輸系統(tǒng)中。對編解碼器進(jìn)行研究,采用H.264技術(shù)實(shí)現(xiàn)編解碼Filter是下一步要完成的工作,當(dāng)然在傳輸質(zhì)量 (QoS)方面也要深入進(jìn)行研究。

參考文獻(xiàn)

1  邵林,曹漢強(qiáng).基于DiectShow的視頻廣播系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2004, 4 :58-60
2  Microsoft DirectX C++ SDK Document [EB/OL],2003
3  陸其明.DiectShow開發(fā)指南[M].北京.清華大學(xué)出版社,2004
4  陸其明.DiectShow實(shí)務(wù)精選[M].北京:科學(xué)出版社,2004
5  張明華.《基于RTP的視頻傳輸控制方法的研究》[D].鄭州市:鄭州大學(xué), 2004.3
6  Jori Liesenborgs   JRTPLIB 3.1.0 [EB/OL] 
posted on 2007-09-24 14:47 聶文龍 閱讀(1460) 評論(0)  編輯 收藏 引用 所屬分類: Audio&Video
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久国产精品一区二区三区| 欧美日韩国产页| 久久一区中文字幕| 久久精品国产一区二区三| 亚洲欧美日韩国产一区| 在线亚洲一区观看| 亚洲免费视频网站| 欧美在线视频二区| 欧美激情影音先锋| 亚洲激情精品| 亚洲激情成人网| 性欧美video另类hd性玩具| 久久黄色小说| 欧美日韩在线一区| 国产真实久久| 这里只有精品视频| 久久综合久久久久88| 亚洲精品中文字幕有码专区| 99精品国产一区二区青青牛奶| 欧美一区二区三区的| 欧美极品影院| 亚洲国产一区二区精品专区| 日韩视频一区二区三区在线播放免费观看 | 免费观看一级特黄欧美大片| 亚洲激情视频在线观看| 欧美亚洲视频一区二区| 欧美日韩午夜| 日韩亚洲不卡在线| 亚洲成在线观看| 亚洲精品国产精品乱码不99 | 亚洲一区二区在线播放| 欧美成人午夜77777| 久久国产天堂福利天堂| 国产日韩欧美视频在线| 亚洲欧美国产日韩天堂区| 99国产精品久久久久久久| 欧美日韩网址| 久久久av水蜜桃| 久久久蜜桃一区二区人| 亚洲精品国产精品国自产观看浪潮| 欧美高清视频一区二区| 欧美日韩三级| 久久免费视频一区| 欧美精品国产精品日韩精品| 中文国产一区| 久久精品五月婷婷| 日韩亚洲欧美一区二区三区| 亚洲午夜在线观看| 最新日韩在线| 午夜日韩电影| 日韩手机在线导航| 欧美在线免费| 亚洲欧美日韩精品久久久久| 亚洲午夜一级| 亚洲精品一区在线| 欧美一区二区三区四区视频 | 欧美日韩一区不卡| 亚洲第一偷拍| 国产精品免费一区二区三区观看| 在线观看精品视频| 欧美激情久久久久| 亚洲精品一区二区三区福利| 欧美日韩在线视频观看| 午夜在线不卡| 亚洲福利一区| 欧美在线首页| 亚洲久久在线| 精品99一区二区| 欧美日韩在线播放| 久久国产手机看片| 欧美激情一区二区三区全黄| 欧美诱惑福利视频| 欧美三级电影大全| av成人免费在线观看| 夜夜精品视频| 欧美精品国产一区| 亚洲三级免费观看| 99精品国产热久久91蜜凸| 久久在精品线影院精品国产| 久久精品一二三| 亚洲激情婷婷| 欧美日韩亚洲精品内裤| 99视频+国产日韩欧美| 亚洲欧美日韩另类精品一区二区三区| 欧美韩国在线| 9l国产精品久久久久麻豆| 亚洲一区二区三区在线| 国产精品欧美日韩一区| 久久se精品一区精品二区| 久久蜜桃精品| 一本色道久久88亚洲综合88 | 欧美三区视频| 亚洲欧美成人网| 欧美高清一区二区| 欧美亚洲综合网| 亚洲三级视频| 极品少妇一区二区三区精品视频| 久久综合激情| 久久国内精品自在自线400部| 欧美成人一区二区在线| 国内精品久久国产| 欧美激情综合亚洲一二区| 欧美在线1区| 欧美一区三区二区在线观看| 日韩亚洲精品电影| 久久综合一区二区三区| 久久天天躁夜夜躁狠狠躁2022 | 一本色道久久综合| 欧美激情在线| 免费看亚洲片| 久久久久久久成人| 欧美大成色www永久网站婷| 久久久久久91香蕉国产| 欧美一区二区播放| 久久se精品一区二区| 久久久久久久久久久成人| 欧美一区二区三区免费观看视频| av不卡在线观看| 午夜精品久久久久久久99热浪潮 | 久久成人一区| 久久成人在线| 欧美黑人在线观看| 亚洲日本va午夜在线影院| 久久久一二三| 亚洲欧洲精品天堂一级| 亚洲制服少妇| 欧美成人中文字幕| 99re6这里只有精品视频在线观看| 亚洲视频免费在线观看| 欧美一区二区三区在线观看视频| 欧美影院成年免费版| 另类综合日韩欧美亚洲| 国产精品视频第一区| 亚洲精品中文字幕在线观看| 亚洲欧美日韩另类| 久久这里有精品15一区二区三区| 亚洲激情影院| 午夜在线观看免费一区| 欧美成人精品h版在线观看| 国产日韩一区| 在线视频日韩| 亚洲在线中文字幕| 欧美激情国产高清| 欧美顶级大胆免费视频| 欧美在线观看一二区| 亚洲激情不卡| 亚洲一区免费观看| 亚洲第一精品久久忘忧草社区| 免费看亚洲片| 欧美性jizz18性欧美| 久久久久久一区| 欧美女同在线视频| 久久人人精品| 国产精品日本欧美一区二区三区| 久久九九国产精品怡红院| 欧美另类videos死尸| 久久综合网hezyo| 国产日韩av在线播放| 亚洲精品国产欧美| 国产亚洲欧美激情| 一区二区三区日韩欧美精品| 国产一区三区三区| 亚洲综合大片69999| 亚洲激情图片小说视频| 一区二区三区国产盗摄| 国产欧美一区二区三区在线老狼 | 日韩一级黄色av| 亚洲私人影院| 亚洲精品一二三区| 欧美一级欧美一级在线播放| 99国产精品久久久久久久| 亚洲性视频网址| 亚洲先锋成人| 欧美精品日本| 亚洲高清色综合| 在线观看欧美一区| 小黄鸭视频精品导航| 亚洲一区二区综合| 欧美婷婷久久| 亚洲免费电影在线观看| 亚洲国产第一页| 免播放器亚洲一区| 免费在线看成人av| 伊人伊人伊人久久| 久久夜精品va视频免费观看| 久久―日本道色综合久久| 国产日韩综合一区二区性色av| 一本到12不卡视频在线dvd| 亚洲日本免费| 欧美日韩国产三区| 一区二区高清视频| 欧美在线一区二区三区| 国产亚洲精品7777| 久久综合久久久久88| 亚洲人成网站777色婷婷| 这里只有精品在线播放| 国产精品激情| 久久久99免费视频| 日韩午夜激情av| 久久精品中文字幕一区二区三区|