幾個RTP的開源實現

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

這裏記錄一下。c++

rtsp:相似用戶界面操做,和Http比較相似,提供播放,中止,加入等功能。注意,這裏rtsp只負責發送操做命令,實際的音視頻數據,並不禁這個協議承載。這是我困惑好久以後才明白的(我是否是太弱了,呵呵)服務器

         rtsp協議並無規定底層是由tcp仍是udp實現,實際操作中,我經過google搜索發現rtsp確實有tcp和udp兩種實現,我就不上抓包數據了,這個博客園裏面已經有人幹過了。另外這個也算和http不一樣的一點,http都是tcp。網絡

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

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

----------------------------------------------------------------------------------------------------------------------加密

以上是比較標準的東東。spa

rtmp: 看起來很像ietf的東西,不過是adobe自家的協議,不事後來也開放出來了,基本上能夠等同於flash播放的服務器。有開源實現rtmpdump,有興趣的同窗能夠本身google一下本身看看。視頻

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

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

相關文章
相關標籤/搜索