




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于DirectShow的MPEG-4視頻傳輸系統(tǒng)的實現 摘要 本文簡單介紹了DirectShow技術,研究了利用DirectShow實現視頻采集、壓縮和網絡傳輸技術。并利用第三方提供的編解碼器實現了MPEG-4視頻數據的網絡傳輸系統(tǒng),在該系統(tǒng)中利用RTP協議進行視頻數據傳輸,同時實現了遠端幀率的控制。關鍵詞 視頻; 采集; 壓縮; DirectShow; MPEG-4,RTP1 引言 近年來,隨著國民經濟的發(fā)展,社會各個部門對于視頻監(jiān)視系統(tǒng)的需求越來越多。但目前的很多監(jiān)視系統(tǒng)都跟具體的硬件相關,必須
2、要具體的采集卡的支持才能實現。所以有必要開發(fā)一種具有通用性的視頻監(jiān)視系統(tǒng),用普通的攝像頭就能實現視頻的采集。 基于DirectShow的開發(fā)能很靈活地控制音視頻的效果,所以選擇DirectShow這種可擴展性好的技術做開發(fā)對以后的應用升級很有幫助。此外,為了實現流媒體傳輸控制的策略,流媒體的傳輸和回放也是應解決的問題之一。由Microsoft提供的DirectShow技術基于組件對象模型技術,支持寬松的格式變化,提供高品質的多媒體流回放。利用它可以在普通微機中實現流媒體的客戶端處理,并可以提高系統(tǒng)的通用性和可擴展性。 對于
3、視頻數據的傳輸,壓縮率是一個必須考慮到的因素。MPEG-4是由ISO和IEC的MPEG組制定的一個關于活動圖像和聲音的編碼國際標準。它在基于內容的交互性、壓縮率、通用訪問能力等方面提供了一系列新的或改進的功能。MPEG-4視頻在提供較好的圖像質量的同時擁有較高的壓縮率,適合于作為傳輸的圖像壓縮標準。 2 相關技術2.1 DirectShow技術簡介 DirectShow是Microsoft為開發(fā)高性能多媒體應用而開發(fā)的底層應用程序接口(API),它是DirectX家族的核心成員之一。DirectShow自身是通過一種系統(tǒng)內置的或程序員
4、開發(fā)的過濾器(Filter)來控制和處理多媒體數據的體系結構。該體系結構定義了如何處理和控制過濾器內部及相互之間的多媒體數據流。每個過濾器都有輸入或輸出針(Pin), 或兩者都有。 過濾器(Filter)是DirectShow的基本組成部分,是Filter Graph(過濾器圖)中最小的功能模塊,DirectShow將多媒體數據的處理分離成不同的步驟,這些不同的步驟由相應的Filter去處理。這樣我們可以把不同的過濾器搭配在一起達到我們要求的來處理多媒體數據。過濾器根據實現功能的不同大致可分為3類:(1) 源過濾器(Source Filters)。
5、源過濾器負責得到原始媒體數據。這些媒體數據的來源包括本地硬盤或網絡上的媒體文件、各種采集卡等。(2) 轉換過濾器(Transform Filters)。轉換過濾器的任務是處理從其他過濾器中接收的數據,經過一定的處理后再傳遞給下一個過濾器。編解碼器就是典型的轉換過濾器。(3) 表現過濾器(Rendering Filters)。表現過濾器對接收到的數據進行最后的處理。它做的工作有:把媒體數據保存為文件、將數據發(fā)送到網絡、顯示視頻、回放音頻等1。 在DirectShow 系統(tǒng)之上是應用程序(Application) 。應用程序要按照程序所要實現
6、的功能建立起相應的Filter Graph ,然后借助于Filter Graph Manager 來控制整個數據的處理過程。DirectShow 能在Filter Graph 運行的時候接收到各種事件,并通過消息的方式發(fā)送到應用程序。這樣就實現了應用程序與DirectShow 系統(tǒng)之間的交互。2.2 RTP/RTCP協議介紹 實時傳輸協議RTP(Realtime Transport Protocol)是針對Internet 上多媒體數據流的一個傳輸協議,1996 年由IETF( Internet 工程任務組) 的AVT小組作為RFC1889 發(fā)布AVT小組后
7、來對該文檔進行了不斷改進,于2003年7月提出了代替RFC1889的RFC3550。RTP充分體現了應用層分幀這一現代通信協議的設計思想,允許其用戶了解、調整甚至制定連續(xù)媒體的打包方案,該協議被廣泛用于VoIP、視頻等實時媒體的傳送。RTP 協議包括RTP 和RTCP(RTP 控制協議) 兩個關系十分密切的子協議: (1) RTP協議傳輸具有實時特性的數據; (2)RTCP協議-監(jiān)測QoS 和傳送參與傳輸者的信息。 RTP(實時傳輸協議) 通常工作在UDP的上層,從上層接收多
8、媒體信息碼流(如MPEG-4視頻) ,組裝成RTP 數據包,然后發(fā)送給下層UDP ,相當于OSI 的會話層,提供同步和排序服務。故RTP 協議適用于傳送連續(xù)性強的數據,如視頻、音頻等,并對網絡引起的時延差錯有一定的自適應能力。RTCP 為實時控制協議,用于管理控制信息,如監(jiān)視網絡的延時和帶寬,一旦所傳輸的多媒體信息的帶寬發(fā)生變化,接收端則通知發(fā)送端,廣播符號化識別碼和編碼參數,達到控制傳輸質量的目的。此外,如果底層網絡支持多點傳播的話,RTP 還支持使用多點傳播向多個目的端點發(fā)送數據。 RTP協議具有如下特點5:(1)靈活性
9、; RTP協議的數據報文和控制報文使用不同的端口,數據流和控制流分離,這樣大大地提高了協議的靈活性,處理也簡單。(2)支持多播 如果下層網路支持,可以支持多播。(3)可擴展性 RTP協議通常為一個具體的應用提供服務,通過一個具體的應用進程實現,而不作為OSI體系結構中單獨的一層來實現,RTP只提供協議框架,開發(fā)者可以根據應用的具體要求對協議進行充分的擴展。3 關鍵技術的實現 該系統(tǒng)的發(fā)送端實現思路如下:用USB攝像頭采集數據,用Divx 5.1.1 Codec 對采集到的數據進行MPEG
10、-4的編碼,然后連到一個發(fā)送Filter把編碼后的數據發(fā)送出去。其Filter Graph如圖1所示 : 圖1 發(fā)送端的Filter Graph 接收端的實現思路如下:通過一個接收Filter接收發(fā)送端發(fā)送的數據,然后再用Divx Decoder Filter對接收到的數據進行解碼。最后用Video
11、 Renderer把解碼后的數據播放出來。其Filter Graph如圖2所示: 圖2 接收端的Filter Graph3.1 數據采集及編碼的實現3.1.1 采集Filter Graph的實現 采集應用的Filter Graph一般比較復雜,而直接使用Filter Grap
12、h Manager上的IGraphBuilder接口構建這種Filter Graph,有時候難度又很大。為此,DirectShow特別提供了一個輔助組件Capture Graph Builder,來簡化這種Filter Graph的創(chuàng)建。 首先是創(chuàng)建Filter Graph Manager 組件,核心代碼如下: 3.1.2 加入采集Filter3.1.3加入MPEG-4編碼器Filter 這里我們采用Divx 提供的開源編碼Filter。安裝DivX.Pro.v5.1.1后會自動安裝Divx的編碼器Filter和
13、解碼器Filter(注:解碼器Filter在接收端要用到)。在程序中加入Divx的編碼器Filter,實現思想是在Video Compressors目錄下枚舉到名稱為"DivX Pro(tm) 5.1.1 Codec"的Filter項后,把它加入到Filter Graph中即可。3.2 數據的發(fā)送和接收3.2.1 數據的發(fā)送Filter的實現 數據的發(fā)送要開發(fā)一個發(fā)送Filter,為了編程上的方便,這里采用程序內Filter的形式來實現。即用類的形式而不是編寫一個成一個后綴為ax的組件注冊后再使用。這里我們定義一
14、個繼承自CBaseFilter的類CFilterMpeg4Sender。這個類必須實現以下功能3: (1) 在類中定義CFilterMpeg4Sender上的Pin的實例mInputPin。 (2) 實現繼承自CBaseFilter:GetPin,用于返回Filter上各個Pin的對象指針。 (3) 實現繼承自CBaseFilter:GetPin,用于返回Filter上各個Pin的數量。 定義一個繼承自CRenderedInputPin的類CMpeg4InputPin,用于實現CFilt
15、erMpeg4Sender上的輸入pin,發(fā)送Filter通過該輸入pin接收編碼Filter輸出的數據,然后按一定的規(guī)則發(fā)送。 這個類必須實現以下功能2: (1) 重寫方法EndOfStream。 (2) 實現IPin:BeginFlush和IPin:EndFlush兩個函數。 (3) 重寫方法CBasePin:CheckMediaType進行連接時媒體類型的檢查。 (4) 重寫方法CBasePin: Receive(),接收Sample并發(fā)送3.2.2 數據的
16、接收Filter的實現 數據的接收其實是要編寫一個Source Filter, 這個Source Filter名稱為CFilterMpeg4Receiver,也繼承自CBaseFilter。這跟發(fā)送Filter的實現有些類似,有一點需要注意的是該Filter輸出的MediaType的設置。 Char MediaType=/媒體數據類型,通過在發(fā)送端把媒體類型寫到一個文件中而得到然后通過語句:CFilterMpeg4Receiver:SetupMediaType(char *)MediaType,88)設置輸出數據的MediaType。
17、 CFilterMpeg4Receiver:SetupMediaType再調用CMpeg4OutPin:SetupMediaType()設置、接收到的媒體數據的格式,3.2.3 數據的網絡傳輸的實現 數據的發(fā)送我們采用開源代碼JRTPLIB【6】提供的RTP協議棧。最新的JRTPLIB對RFC3550的實現進行了封裝,開發(fā)人員只要初步了解RTP協議就可以開發(fā)出高質量的音視頻傳輸程序。使用JRTPLIB時,只需要通過繼承RTPSession類,再重新以下幾個函數就可以實現視頻數據的接收。
18、 在網絡帶寬比較低的情況下(如十幾KBps),數據丟幀現象比較嚴重,這對于圖像質量有很大的影響。我們采用拆幀(拆成1400個字節(jié))以后再發(fā)送的方法,來降低丟幀率。接收端收到數據后,再把屬于同一視頻幀的數據再組起來。 網絡發(fā)送接收程序流程圖如圖3所示:圖3 網絡發(fā)送接收程序流程圖 對程序流程圖的說明如下:(1)發(fā)送端拆幀的算法如下: 然后把屬于同一視頻幀的數據組好,發(fā)送到解碼Filter。 經過測試(在CDMA1.X網
19、絡下),采用拆幀方法傳輸視頻數據比直接發(fā)送丟包率更低,傳輸質量有了很大的提高。3.3 數據解碼及回放的實現 解碼Filter使用的是Divx提供的開源解碼器,在接收Filter的后面接上該解碼Filter即可,最后接上Renderer Filter就可以把接收到的數據回放出來。3.4 實現幀率控制功能 通過在采集設備和編碼Filter(DivX Pro(tm) 5.1.1 Codec)之間加入一個幀率控制Filter來實現幀率的控制,該Filter相當于一個視頻幀數計數器,每接收到一幀,并不立即把該幀發(fā)給下游的編碼Filter,而是把計數器的值加1,當計數器的值達到最大值時才把當前收到的幀發(fā)出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- WPS功能設計及用戶反饋試題及答案
- 2025年計算機Msoffice學習計劃試題及答案
- 稅務改革政策影響分析試題及答案
- 辦公文檔技能提升的全面指導試題及答案
- 2025年廢舊電子產品無害化處理與資源回收行業(yè)市場布局研究分析報告
- 現代漢語背單詞技巧試題及答案
- 掌握2025稅法考試技能試題及答案
- 文藝復興時期的文學影響試題及答案
- 法學概論與社會變革的關系試題及答案
- 城鄉(xiāng)垃圾分類與資源化利用項目商業(yè)模式分析
- 2025年山東省臨沂市平邑縣中考一模語文試題(含答案)
- 2025-2030年中國海岸監(jiān)視雷達行業(yè)市場現狀供需分析及投資評估規(guī)劃分析研究報告
- 2025年電子信息工程專業(yè)考試試題及答案
- 【威?!?025年山東省威海技師學院公開招聘工作人員29人筆試歷年典型考題及考點剖析附帶答案詳解
- 2025年第六屆全國國家版圖知識競賽題庫及答案
- 2025-2030國內煙霧報警器行業(yè)市場發(fā)展現狀及競爭格局與投資發(fā)展研究報告
- 機械租賃投標服務方案
- 離婚協議中子女撫養(yǎng)費調整及監(jiān)護權變更公證申請書
- 物流倉儲行業(yè)智能化轉型政策解讀與市場趨勢報告(2025年)
- GA/T 2158-2024法庭科學資金數據獲取規(guī)程
- 2025年北京市朝陽區(qū)九年級初三一模英語試卷(含答案)
評論
0/150
提交評論