基于DirectShow的MPEG-4視頻傳輸系統的研究與實現
在網絡帶寬比較低的情況下(如十幾KBps),數據丟幀現象比較嚴重,這對于圖像質量有很大的影響。我們采用拆幀(拆成1400個字節)以后再發送的方法,來降低丟幀率。接收端收到數據后,再把屬于同一視頻幀的數據再組起來。
網絡發送接收程序流程圖如圖3所示:
圖3 網絡發送接收程序流程圖
對程序流程圖的說明如下:
(1)發送端拆幀的算法如下:
然后把屬于同一視頻幀的數據組好,發送到解碼Filter。
經過測試(在CDMA1.X網絡下),采用拆幀方法傳輸視頻數據比直接發送丟包率更低,傳輸質量有了很大的提高。
3.3 數據解碼及回放的實現
解碼Filter使用的是Divx提供的開源解碼器,在接收Filter的后面接上該解碼Filter即可,最后接上Renderer Filter就可以把接收到的數據回放出來。
3.4 實現幀率控制功能
通過在采集設備和編碼Filter(DivX Pro(tm) 5.1.1 Codec)之間加入一個幀率控制Filter來實現幀率的控制,該Filter相當于一個視頻幀數計數器,每接收到一幀,并不立即把該幀發給下游的編碼Filter,而是把計數器的值加1,當計數器的值達到最大值時才把當前收到的幀發出去。在接收端發控制幀率命令給采集端可以很方便的實現幀率的遠端控制。
程序片斷如下:
加了幀率控制Filter的發送端 Filter Graph 如圖4所示:
圖4 實現了幀率控制的Filter Graph
4 總結
該系統采用了DirectShow技術實現了MPEG-4視頻數據的傳輸,視頻數據的傳輸采用了RTP協議。而且還實現了遠端幀率的控制,該系統可以很方便的移植到未來3G網絡的圖像傳輸系統中。對編解碼器進行研究,采用H.264技術實現編解碼Filter是下一步要完成的工作,當然在傳輸質量(QoS)方面也要深入進行研究。
評論