Opencv + OpenNI + H.263 + RTP 視頻截取、壓縮和發送實驗

 由於工作需要,做了下Camera或Kinect視頻採集後經過H263壓縮並通過RTP向外發送的實驗,期間查了不少網上的資料,看了不少文章,但最終主要參考了這兩個帖子:

http://blog.csdn.net/ljbsdu/article/details/6663730

http://blog.163.com/gz_ricky/blog/static/182049118201122311118325/

       其實大部分的工作在這兩個帖子中已經做了,他們做的都不錯,經過實驗能夠正常運行。我所做的基本就是上兩個帖子的集合,我也就不具體介紹我怎麼實現的了。但通過實驗,發現有幾點需要說明:

       1、在第一帖子中,雖然使用了RTP的庫,但並沒有按照rfc2190及類似標準對視頻幀進行組包,而是簡單將視頻幀放在了RTP包的payload中,這樣做雖然也能夠傳輸視頻,但並不通用,而且若是數據大於一個RTP包的最大規定大小,也沒有實現分包的機制。所以實質上只是把RTP當做了UDP來使用。

       2、在第一帖子中的H263壓縮部分,作者一直進行的是 I幀 的壓縮,而沒有發送P幀,這樣就失去了H263的優點,正確的應該是發一個 I幀後中連續發幾個P幀,至於兩者的比例是多少,我還沒有查到相關的資料。另外就是,帖子中用到的H263壓縮程序對於I幀的壓縮存在問題,壓縮的速度隨時間的推移越來越慢,這點還需要以後詳細調查一下原因。

       3、若是要進行H263的壓縮,最後將採集來的視頻數據放在Opencv的Mat變量中,而不要放在IplImage類型變量中。經過實驗,直接對IplImage中的數據進行壓縮,速度會極其慢。

       4、對第一個帖子中提供的VC2005工程進行編譯後,在Debug模式下會運行錯誤,我估計是所使用的Jrtplib庫的問題,但我對其源代碼進行重新設置後編譯(也就是在“代碼輸出”中進行設置),雖然能夠運行,運行後卻接收不到數據,可能還是我編譯上的問題,這個還需要以後有時間的話做下試驗。

發佈了4 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章