1. 程式人生 > >幾個RTP的開源實現

幾個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:專案主頁如下

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

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

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

上下載連結

相關推薦

RTP開源實現

玩了兩天rtp協議,基本把rtsp/rtcp/rtp/rtmp/srtp/strcp/mms,幾個協議的區別和概念弄明白了。 這裡記錄一下。 rtsp:類似使用者介面操作,和Http比較類似,提供播放,停止,加入等功能。注意,這裡rtsp只負責傳送操作命令,實際的音視

HTTP模擬工具【C#/Winform源碼】、Json綁定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool這主要開源框架

type form num -m 請求 resource dap bool dev HTTP模擬工具 開發語言:C#/Winform開發工具:Visual Studio 2017數據庫: SQLite使用框架:界面-MetroModernUI

Github上的C++開源項目

eve 開發者 pda 問題 col surf view app its ?? http://www.zhihu.com/question/28341521 有人吐槽怎麽下手FreeNOS,上文檔 FreeNOS: FreeNOS Do

1040 有PAT——c實現

1040 有幾個PAT (25 分) 字串 APPAPT 中包含了兩個單詞 PAT,其中第一個 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二個 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。 現給定字串,問一共可以形成多少個 PAT?

最值得程式猿學習的iOS 開源專案

        相信從事軟體開發的童鞋應該都有這樣的感觸,不管怎麼學,知識總是學不完的,而且入門一門技術不難,要深入學習一門技術才是真的難。          任何計算機技術,如果不努力學習、進步,就會感覺自己停步不前,沒成就趕不說,還會對自己的自信心也是一個嚴重的打

p2p開源專案[轉]

最近看的幾個開源專案的印象不是專業的評價,就像讀書筆記吧:2、:這是C++版的,他最大特點就是集成了對多個流行P2P檔案格式的支援,有了它可以下載電驢、.torrent等,目前版本是2.2.1.0。對: EDonkey2000, Gnutella, BitTorrent 及G

常見字串函式實現程式碼

(1)size_t  strlen(const char *str); size_t strlen(const char *str) { assert(str != NULL); unsigned int cnt = 0; while(*str++) ++cnt

Map-produce算法兩開源實現

nod min node eat content github 實現 mic data- https://github.com/michaelfairley/mincemeatpy https://github.com/denghongcai/mincemeat-nod

請推薦asp.net下做網站的好的開源框架

b- 開發 開放源代碼 ces dex 生產 推薦 面向對象 塑造 1.We7 CMSWe7 CMS是由西部動力開發的一款充分發掘互聯網Web2.0(如博客、RSS等)的信息組織優勢,將其理念利用到政府企事業網站的構建、組織、管理中的網站建設和管理方面的產品。系統目標:叫創

常用網絡/服務器監控開源軟件

memcached 托管 不能 不足 div ios系統 正在 linux下 tle 想要更清晰的了解你的網絡嗎?沒有比這幾個免費的工具更好用的了。 網絡和系統監控是一個很寬的範疇。有監控服務器、網絡設備、應用正常工作的方案,也有跟蹤這些系統和設備性能,提供趨勢性能分

js 實現每隔字符進行添加字符串

實現 regexp reverse false turn bsp ret var reg function Xreplace(str,length,reversed) { var re = new RegExp("\\d{1,"+length+"}","g");

簡單說下 Winform 的分頁快速開發框架必須要實現功能之一

重點 del winform over ber 開發 dex color 基本 簡單說下 Winform 的分頁快速開發框架必須要實現的幾個功能之一 分頁非為前端分頁 和 後端分頁,前端分頁只有適用於B/S,B/S的呈現速度遠遠不如C/S,而C/S則沒有這個問題,所以分

圖像處理中基本的處理方法c#代碼實現

位圖 edi windows系統 process 圖案 電視 間接 做了 同步 圖像是人類獲取和交換信息的主要來源,因此,圖像處理的應用領域必然涉及到人類生活和工作的方方面面。隨著人類活動範圍的不斷擴大,圖像處理的應用領域也將隨之不斷擴大。(1)航天和航空技術方面的應用 數

實現分頁的方法

ref charset 方便 ges gin ram ani shortcuts ive 自定義方法 def user_list(request): # user_list = data[0:10] # user_list = data[1

目前最受歡迎的12Python開源框架,你用過

python 爬蟲 web 入門 開源 今天給大家帶來了12個在GitHub等開源網站中最受歡迎的Python開源框架。如果你正在學習python,那麽這12個開源框架,千萬別錯過,這些框架包括事件I/O,OLAP,Web開發,高性能網絡通信,測試,爬蟲等。雖說不上是全都有,但也足夠滿足你

CSS3實現小loading效果

css linear 1.2 普通 dong 500px 交叉 yellow index     昨晚上閑的沒事突然想做幾個小loading效果,下面是昨晚上做的幾個小案例,分享給大家     1.水波loading:這個loading是我覺得非常簡單,但是看上去的效果卻非

常用的Excel開源

之前試過 SpreadSheet,該類庫對Excel的操作是基於odbc的,而且還只能使用MFC來操作。當然,可以把SpreadSheet封裝成dll,然後給win32的程式來呼叫,我就是這麼幹的。 但是由於SpreadSheet是基於ODBC的,資料匯出的時候太慢了(實測:大概一秒鐘處理5

Android SurfaceView+MediaPlayer實現不同的視訊輪流播放

MediaPlayer 1)如何獲得MediaPlayer例項: 可以使用直接new的方式: MediaPlayer mp = new MediaPlayer(); 也可以使用create的方式,如: MediaPlayer mp = MediaPlayer.create(t

實現毫秒級和納秒級計數的API--timeGetTime、GetTickCount、QueryPerformanceCounter

Private Declare Function timeGetTime Lib "winmm.dll" () As Long Private Declare Function GetTickCount Lib "kernel32" () As Long Private Declar

Mac鍵盤實現Home End Page UP Page DOWN這

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!