幾個RTP的開源實現


玩了兩天rtp協議,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,幾個協議的區別和概念弄明白了。

這里記錄一下。

rtsp:類似用戶界面操作,和Http比較類似,提供播放,停止,加入等功能。注意,這里rtsp只負責發送操作命令,實際的音視頻數據,並不由這個協議承載。這是我困惑很久之后才明白的(我是不是太弱了,呵呵)

         rtsp協議並沒有規定底層是由tcp還是udp實現,實際操做中,我通過google搜索發現rtsp確實有tcp和udp兩種實現,我就不上抓包數據了,這個博客園里面已經有人干過了。另外這個也算和http不同的一點,http都是tcp。

rtp : 這個協議是干累活的,音視頻數據,都由這個協議承載。rtp實際的包里,還包括些流類型(h264,aac)描述,包序列描述等等。底層數據包都由UDP承載

rtcp: 控制協議,舉個例子,音視頻數據發出去了,發了多少,收到多少,丟了多少,網絡延遲多大,這些QOS(Quality of Service)相關的數據,以及音頻同步的信息。誰來提供,沒錯,就是rtcp。與rtp是兄弟協議,由udp承載數據。

----------------------------------------------------------------------------------------------------------------------

以上是比較標准的東東。

rtmp: 看起來很像ietf的東西,不過是adobe自家的協議,不過后來也開放出來了,基本上可以等同於flash播放的服務器。有開源實現rtmpdump,有興趣的同學可以自己google一下自己看看。

srtp: 思科與愛立信扣起手搞得,后來也成了ietf標准,可以理解成加密的rtp,主要用於voip,視頻方面?偶不知道。。。。

srtcp:同上。這兩個協議都是相伴而生的。

mms:微軟自己搞的,類似於rtsp協議,暗下不表。覺得這里很搞笑,不是國際標准,但總還要給他很大的支持,shit。微軟啊,弄了太多不標准了。。。

 

我不帖包頭分析和協議層次這種東西了,太多了,我只是記錄一下我自己對這些東西的理解,網上大多講得不夠全面,我總結一下。

------------------------------------------------------------------------------------------------------------------------

找了幾個rtp比較知名的開源實現,並且用vc2005編譯通過了。附帶demo。

ortp:linphone項目的子項目,開發語言是c語言,實現了rtp/rtcp協議,沒有實現rtsp協議,如果要用,自己google一下,有比較多的開源實現。自己動手也不算復雜。

jrtplib:項目主頁如下

http://research.edm.uhasselt.be/~jori/page/index.php?n=Main.HomePage

開發語言是C++,同樣沒有實現rtsp。有喜歡c++的同學可以選擇這個。

live555:這個項目放到這里,我很糾結,因為live555的野心明顯不是實現幾個協議,人家是要干票大的。他除了實現了rtsp/rtp/rtcp/各種協議之外,還實現了各種流媒體的分包解析。

 

上面兩個還算是單純的庫,live555就是一整套解決方案了,只是順便實現幾個協議,呵呵。其他:vlc/mpeg4ip/的rtp相關實現都是使用live555,不多了。

 

上下載鏈接

http://files.cnblogs.com/mr-nop/live.rar

http://files.cnblogs.com/mr-nop/jrtplib.rar

http://files.cnblogs.com/mr-nop/ortp.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM