VLC的sdp文件格式分析

一概述:
SDP目的就是在媒體會話中,傳遞媒體流信息,允許會話描述的接收者去參與會話。SDP基本上在internet上工作。他定義了會話描述的統一格式,但並不定義多播地址的分配和SDP消息的傳輸,也不支持媒體編碼方案的協商,這些功能均由下層傳送協議完成。典型的會話傳送協議包括:SAP(Session Announcement Protocol會話公告協議),SIP(Session Initiation
 Protocol,會話初始協議),RTSP,HTTP,和使用MIME的E-Mail。
SDP包括以下一些方面:

  1. 會話的名稱和目的
  2. 會話存活時間
  3. 包含在會話中的媒體信息,包括:媒體類型(video,audio, etc)  傳輸協議(RTP/UDP/IP,H.320, etc)  媒體格式(H.261video,  MPEG video, etc)多播或遠端(單播)地址和端口
  4. 爲接收媒體而需的信息(addresses, ports, formats and so on)
  5. 使用的帶寬信息
  6. 可信賴的接洽信息(Contact information)

二 sdp規格:

SDP會話描述由多行<type&gt;=<value>組成。整個協議區分大小寫。“=”兩側不允許有空格。
<type>是一個字符
<value>是一個字符串
<type>格式
SDP會話描述由一個會話級描述(session_level description)和多個媒體級描述(media_level description)組成。
會話級(session_level)的作用域是整個會話。其位置是從’v=’行開始到第一個媒體描述爲止。媒體級(media_level)描述是對單個的媒體流進行描述(例如傳送單個音頻或者視頻的vlc sdp文件只有短短的幾句話,從m=開始,這其實就是個媒體機描述),其位置是從’m=’行開始到下一個媒體描述爲止。
總之,除非媒體部分重載,會話級的值是各個媒體的缺省默認值(就是說媒體級描述其實也是一個會話級描述,只不過沒寫出來的會話級描述參數都用的缺省值)。


SDP的結構如下:
Sessiondescription
        v=  (protocol version)
        o= (owner/creator and session identifier).
        s= (session name)

        i=* (session information)
        u=* (URI of description)
        e=* (email address)
        p=* (phone number)
        c=* (connection information - notrequired if included in all media)
        b=* (bandwidth information)
        One or more time descriptions (seebelow)
        z=* (time zone adjustments)
        k=* (encryption key)
        a=* (zero or more session attributelines)
        Zero or more media descriptions (seebelow)
 
Time description
       t=  (time the session is active)
        r=* (zero or more repeat times)
 
Media description
        m= (media name and transport address)
        i=* (media title)
        c=* (connection information - optionalif included at session-level)
        b=* (bandwidth information)
        k=* (encryption key)
        a=* (zero or more media attributelines)

上面的有些行是必需有的,有些行是可選的。可選的行有*號標記。必需的是v,o,s,t,m(這是對於會話級描述和媒體及描述總體而言的,對於媒體級描述而言只有m=是必須的)。注意所有的描述項必須按照上面的順序給出。

舉例:
1.媒體級會話VLC播放264視頻的sdp文件
m=video 1234 RTP/AVP 96
a=rtpmap:96 H264
a=framerate:15
c=IN IP4 172.18.168.45
詳細:http://blog.csdn.net/zhangjikuan/article/details/27378237
2.媒體級會話VLC播放g711音頻的sdp文件
m=audio 8888 RTP/AVP 0   
a=rtpmap:0 pcma/8000/1                          這地方是a率壓縮方式;pcmu就是u率型
a=framerate:25                                 8000/25=320Byte    每個rtp包的音頻數據爲320byte   時間戳增值爲320
c=IN IP4 192.168.1.230
詳細:http://blog.csdn.net/zhangjikuan/article/details/27379201
如果是同時播放音頻和視頻流只要把這兩個媒體級會話合在一個sdp文件中就好了

3.點播mp4文件,MS_H返回給終端的sdp信息

v=0
o=HWPSS 3427743244 1084119141 IN IP4 127.0.0.1
s=test1.mp4 
test1.mp4:媒體文件名
c=IN IP4 0.0.0.0
t=0 0
a=control:*
a=range:npt=0-44.000000
44.000000:mvhd原子:ntohl (movie_header->duration)/ ntohl(movie_header->time_scale)
 

轉載:https://blog.csdn.net/zhangjikuan/article/details/27367437

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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