国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

RTP、RTCP協議學習-2015.04.15

2019-11-14 16:03:41
字體:
來源:轉載
供稿:網友

  最近做視頻編解碼部分,傳輸采用RTP協議。對學習做個記錄

  1、簡介

  實時傳輸協議Real-time Transport PRotocol或簡寫RTP)是一個網絡傳輸協議,它是由IETF的多媒體傳輸工作小組1996年在RFC 1889中公布的。RTP被定義為傳輸音頻、視頻、模擬數據等實時數據的傳輸協議,與傳統的注重的高可靠的數據傳輸的運輸層協議相比,它更加側重的數據傳輸的實時性,此協議提供的服務包括數據順序號、時間標記、傳輸控制等。RTP通常與輔助控制協議RTCP一起工作,RTP只負責實時數據的傳輸,RTCP負責對RTP的通信和會話進行帶外管理(如流量控制、擁塞控制、會話源管理等)。RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網上的實時數據。

  2、RTP的協議層次

  

  可以看出RTP和UDP一樣位于傳輸層,實時語音、視頻數據經過模數轉換和壓縮編碼處理后,先送給RTP封裝成為RTP數據單元,RTP數據單元被封裝為UDP數據報,然后再向下遞交給ip封裝為IP數據包。這里有個地方需要注意:RTP分組只包含RTP數據,而控制是由另一個配套協議RTCP提供。RTP在端口號1025到65535之間選擇一個未使用的偶數UDP端口號,而在同一次會話中的RTCP則使用下一個奇數UDP端口號。RTP通常和RTCP一起工作,在RTP會話期間,各參與者周期的發送RTCP消息。RTCP消息含有已發送數據的丟包統計和網絡擁塞等信息,服務器可以利用這些信息動態的改變傳輸速率,甚至改變凈荷的類型。RTCP消息也被封裝為UDP數據報進行傳輸。

  3、RTP的協議封裝

  

version (V): 2 bits

標明RTP版本號。協議初始版本為0,RFC3550中規定的版本號為2。

padding (P): 1 bit

如果該位被設置,則在該packet末尾包含了額外的附加信息,附加信息的最后一個字節表示額外附加信息的長度(包含該字節本身)。該字段之所以存在是因為一些加密機制需要固定長度的數據塊,或者為了在一個底層協議數據單元中傳輸多個RTP packets。

extension (X): 1 bit

如果該位被設置,則在固定的頭部后存在一個擴展頭部,格式定義在RFC3550 5.3.1節。

CSRC count (CC): 4 bits

在固定頭部后存在多少個CSRC標記。

marker (M): 1 bit

該位的功能依賴于profile的定義。profile可以改變該位的長度,但是要保持marker和payload type總長度不變(一共是8 bit)。

payload type (PT): 7 bits

標記著RTP packet所攜帶信息的類型,標準類型列出在RFC3551中。如果接收方不能識別該類型,必須忽略該packet。

sequence number: 16 bits

序列號,每個RTP packet發送后該序列號加1,接收方可以根據該序列號重新排列數據包順序。

timestamp: 32 bits

時間戳。反映RTP packet所攜帶信息包中第一個字節的采樣時間。

SSRC: 32 bits

數據源標識。在一個RTP session其間每個數據流都應該有一個不同的SSRC。

CSRC list: 0 to 15 items, 每個源標識32 bits

貢獻數據源標識。只有存在Mixer的時候才有效。如一個將多聲道的語音流合并成一個單聲道的語音流,在這里就列出原來每個聲道的SSRC。

  4、關于RTP的類庫。

  看了網上的一些資料,.NET方面對RTP的封裝看到了一個RTP.NET.DLL。有個人的博客專門介紹了這個DLL,今天只是嘗試接收了一下,發現可以接收到數據。在使用這個DLL的時候,出現了“其他信息: 混合模式程序集是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中加載該程序集。”異常,解決方法很簡單。在APP.Config中configuration下添加

  <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0"/>
      </startup>

  5、總結

  (1)對RTP理論方面進行了一些學習,覺得現在還能理解能用到的就是上面這一些。

  (2)初步調用了一下RTP.NET.DLL,能接收到數據

  (3)發送的數據使用的是VLC media player工具進行測試

  (4)參考資料有很多,基本也是摘錄。

  每天記錄一點點,就能進步一點點....

 

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰和县| 烟台市| 柳林县| 响水县| 阳东县| 都安| 龙川县| 家居| 改则县| 和田市| 柳林县| 开阳县| 湘潭县| 潮安县| 淮阳县| 方山县| 正蓝旗| 西林县| 文化| 万安县| 永昌县| 乐安县| 佛山市| 洛扎县| 沙河市| 长丰县| 安宁市| 长沙县| 靖西县| 琼海市| 佛教| 龙川县| 石狮市| 禹城市| 临邑县| 芦山县| 牙克石市| 山丹县| 满城县| 久治县| 平凉市|