SDP 徹底是一種會話描述格式 ― 它不屬於傳輸協議 ― 它只使用不一樣的適當的傳輸協議,包括會話通知協議(SAP)、會話初始協議(SIP)、實時流協議(RTSP)、MIME 擴展協議的電子郵件以及超文本傳輸協議(HTTP)。SDP協議是也是基於文本的協議,這樣就能保證協議的可擴展性比較強,這樣就使其具備普遍的應用範圍。SDP 不支持會話內容或媒體編碼的協商,因此在流媒體中只用來描述媒體信息。媒體協商這一塊要用RTSP來實現.html
SDP描述由許多文本行組成,文本行的格式爲<類型>=<值>,<類型>是一個字母,<值>是結構化的文本串,其格式依<類型>而定。服務器
<type>=<value>[CRLF]網絡
常見的fields有:session
下面是一個helix 流媒體服務器的RTSP協議中的SDP協議:ide
v=0 //SDP version編碼
// o field定義的源的一些信息。其格式爲:o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>3d
o=- 1271659412 1271659412 IN IP4 10.56.136.37 s=<No title>netty
i=<No author> <No copyright> //session的信息htm
c=IN IP4 0.0.0.0 //connect 的信息,分別描述了:網絡協議,地址的類型,鏈接地址。blog
c=IN IP4 0.0.0.0
t=0 0 //時間信息,分別表示開始的時間和結束的時間,通常在流媒體的直播的時移中見的比較多。
a=SdpplinVersion:1610641560 //描述性的信息
a=StreamCount:integer;2 //用來描述媒體流的信息,表示有兩個媒體流。integer表示信息的格式爲整數。
a=control:*
a=DefaultLicenseValue:integer;0 //License信息
a=FileType:string;"MPEG4" ////用來描述媒體流的信息說明當前協商的文件是mpeg4格式的文件
a=LicenseKey:string;"license.Summary.Datatypes.RealMPEG4.Enabled"
a=range:npt=0-72.080000 //用來表示媒體流的長度
m=audio 0 RTP/AVP 96 //作爲媒體描述信息的重要組成部分描述了媒體信息的詳細內容:表示session的audio是經過RTP來格式傳送的,其payload值爲96傳送的端口尚未定。
b=as:24 //audio 的bitrate
b=RR:1800
b=RS:600
a=control:streamid=1 //經過媒體流1來發送音頻
a=range:npt=0-72.080000 //說明媒體流的長度。
a=length:npt=72.080000
a=rtpmap:96 MPEG4-GENERIC/32000/2 //rtpmap的信息,表示音頻爲AAC的其sample爲32000
a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210 //config爲AAC的詳細格式信息
a=mimetype:string;"audio/MPEG4-GENERIC"
a=Helix-Adaptation-Support:1
a=AvgBitRate:integer;48000
a=HasOutOfOrderTS:integer;1
a=MaxBitRate:integer;48000
a=Preroll:integer;1000
a=OpaqueData:buffer;"A4CAgCIAAAAEgICAFEAVABgAAAC7gAAAu4AFgICAAhKIBoCAgAEC"
a=StreamName:string;"Audio Track"
下面是video的信息基本和audio的信息相對稱,這裏就再也不說了。
m=video 0 RTP/AVP 97
b=as:150
b=RR:11250
b=RS:3750
a=control:streamid=2
a=range:npt=0-72.080000
a=length:npt=72.080000
a=rtpmap:97 MP4V-ES/2500
a=fmtp:97 profile-level-id=1;
a=mimetype:string;"video/MP4V-ES"
a=Helix-Adaptation-Support:1
a=AvgBitRate:integer;300000
a=HasOutOfOrderTS:integer;1
a=Height:integer;240 //影片的長度
a=MaxBitRate:integer;300000
a=MaxPacketSize:integer;1400
a=Preroll:integer;1000
a=Width:integer;320 //影片的寬度
a=OpaqueData:buffer;"AzcAAB8ELyARAbd0AAST4AAEk+AFIAAAAbDzAAABtQ7gQMDPAAABAAAAASAAhED6KFAg8KIfBgEC"
a=StreamName:string;"Video Track"
引用自:http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html