流媒體傳輸控制協議(RTSP RTP SDP)詳解之SDP

轉載自原文鏈接,侵刪

SDP協議

一、SDP協議介紹

        SDP 完全是一種會話描述格式(對應的RFC2327 ,
RFC4566, )

― 它不屬於傳輸協議 ― 它只使用不同的適當的傳輸協議,包括會話通知協議(SAP)、會話初始協議(SIP)、實時流協議(RTSP)、MIME 擴展協議的電子郵件以及超文本傳輸協議(HTTP)。SDP協議是也是基於文本的協議,這樣就能保證協議的可擴展性比較強,這樣就使其具有廣泛的應用範圍。SDP 不支持會話內容或媒體編碼的協商,所以在流媒體中只用來描述媒體信息。媒體協商這一塊要用RTSP來實現.

流媒體協議sdp信息,附帶在describe報文中有rtsp服務端發出,主要目的,告之會話的存在和給出參與該會話所必須的信息,sdp會話完全是文本形式,採用UTF-8編碼的ISO 10646字符集

sdp描敘符包括:

  • 會話名和目的
  • 會話激活的時間區段
  • 構成會話的媒體
  • 接收這些媒體所需要的信息(地址,端口,格式)
  • 會話所用的帶寬信息
  • 會話負責人的聯繫信息

媒體信息包括:

  • 媒體類型(視頻,音頻等)
  • 傳送協議(RTP/UDP/IP H.320等)
  • 媒體格式(H,264視頻,MPEG視頻等)
  • 媒體地址和端口

二、SDP協議格式

        SDP描述由許多文本行組成,文本行的格式爲<類型>=<值>,<類型>是一個字母,<值>是結構化的文本串,其格式依<類型>而定。

<type> = < value > [CRLF]

type: 該字節爲單字節(如: v,o, m等)區分大小寫,=號倆側部允許有空格

value: 爲結構化文本串

會話描敘格式介紹

名稱 格式: 說明
協議版本: v=0 給出sdp的版本號,目前爲0版本,無子版本號
會話源 o=(用戶名)(會話標識)(版本)(網絡類型)(地址類型)(地址) 如果不存在用戶登錄名,該字段標誌位“-” 會話標識爲一隨機數字串 版本爲該會話公告的版本 \r\n 網絡類型爲文本串, \n “IN”表示internet 地址類型爲文本串,目前定義爲“IP4”和“IP6”兩種地址
會話名: s=(會話名) 每個會話描述必須只有一個會話名
會話信息: i=(會話信息) 此字段並非必須,建議包括進來用於描敘相應會話文字性說明,每個會話描敘最多只能有一個
URL: u=(URL) 此字段並非必須,提供url的描敘信息
連接數據: c=(網絡類型)(地址類型)(連接地址)

時間描述

  • t = (會話活動時間)
  • r = * (0或多次重複次數)

媒體描述

  • m = (媒體名稱和傳輸地址)
  • i = * (媒體標題)
  • c = * (連接信息 — 如果包含在會話層則該字段可選)
  • b = * (帶寬信息)
  • k = * (加密密鑰)
  • a = * (0 個或多個會話屬性行)
m描敘行:

格式: m=(媒體)(端口)(傳送層)(格式列表)

媒體類型:音頻(audio),視頻(video),應用,數據和控制

端口:媒體傳送層端口

傳送層:ip4上大多基於rtp/udp上傳送(RTP/AVP)IETF RTP協議,在udp上傳輸
格式列表: 對應對應的音頻負載類型(PT)

m=video 0 RTP/AVP 96

a描敘行:

格式:a=rtpmap:(淨荷類型)(編碼名)/(時鐘速率)【/(編碼參數)】

a=control:(音/視頻連接信息)
a=control:rtsp://192.168.1.197/h264stream0/trackID=0

a=rtpmap:96 H264/90000

三、SDP協議例子



v=0
o=StreamingServer 3677033027 1437537780000 IN IP4 192.168.1.44
s=\demo.mp4
u=http:///
e=admin@
c=IN IP4 0.0.0.0
b=AS:1398
t=0 0
a=control:*
a=x-copyright: MP4/3GP File hinted with GPAC 0.5.0-rev4065 (C)2000-2005 - http://gpac.sourceforge.net
a=range:npt=0- 216.52167

m=video 0 RTP/AVP 96
b=AS:1242
a=3GPP-Adaptation-Support:1
a=rtpmap:96 H264/90000
a=control:trackID=65536
a=fmtp:96 profile-level-id=42000A; packetization-mode=1; sprop-parameter-sets=Z0IACpZUBQHogA==,aM44gA==
a=framesize:96 640-480

m=audio 0 RTP/AVP 97
b=AS:156
a=3GPP-Adaptation-Support:1
a=rtpmap:97 mpeg4-generic/48000/1
a=control:trackID=65537
a=fmtp:97 profile-level-id=41; config=1188; streamType=5; mode=AAC-hbr; objectType=64; constantDuration=1024; sizeLength=13; indexLength=3; indexDeltaLength=3

視頻"a=fmtp"字段的解析 參考 RFC3984的8.2節
音頻config描述符的解析 參考 RFC 3016

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章