參考地址:https://blog.csdn.net/zhangjikuan/article/details/27367437, https://www.cnblogs.com/idignew/p/7249056.html
vp8 sdp描述文件
v=0 o=- 0 0 IN IP4 127.0.0.1 s=- c=IN IP4 127.0.0.1 t=0 0 m=audio 5006 RTP/AVP 111 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 m=video 5004 RTP/AVP 96 a=rtcp-mux a=rtpmap:96 VP8/90000
1、v=0 sdp的版本號
2、o=<username> <sessionid> <version> <network type> <address type> <address> / o=<用戶名> <session id> <會話版本> <網絡類型><地址類型> <地址>,6部分組成,對會話的發起者進行了描述
<username>是用戶的登錄名。如果主機不支持<username>,則為 ”-”;
<session id>:是一個數字串。在整個會話中,必須是唯一的,建議使用NTP(Network Time Protocol)timestamp,這里是0;
<version>:該會話公告的版本,供公告代理服務器檢測同一會話的若干個公告哪個是最新公告.基本要求是會話數據修改后該版本值遞增,建議用NTP時戳,這里是0;
<networktype>:網絡類型,一般為”IN”,表示”internet”;
<address type>:地址類型,一般為IP4;
<address>:地址,由於在本機上傳輸,這里是 127.0.0.1;
3、s=<sessionname>,會話名,在整個會話中有且只有一個”s=”,就像username一樣,這里是 “ - ”;
4、c=<networktype> <address type> <connection address>,表示媒體連接信息, 一個會話聲明中,會話級描述中必須有”c=”項或者在每個媒體級描述中有一個”c=”項。可能在會話級描述和每個媒體級描述中都有”c=”項
<network type>:網絡類型,一般為”IN”,表示”internet”;
<address type>:地址類型,一般為IP4;
<connection address>:應用程序必須處理域名和ip地址兩種情形。單播時,為域名或ip地址,推薦使用域名;多播,為ip地址,且ip后面必須有TTL(取值范圍是0-255),地址和TTL決定了多播包被傳播的范圍。例 c=IN IP4 224.2.1.1/127,這里單播使用域名
5、 t=<start time> <stop time>,描述了會話的開始時間和結束時間
<start time> 和<stop time> 為NTP時間,單位是秒。假如<stop time>為零表示過了<start time>時間后會話一直持續。當<start time> 和<stoptime>均為零時表示持久會話,建議start time和stoptime不要設為0。因為不知道此會話的開始和結束時間,增加了調度(scheduling)的難度
這里開始時間和結束時間都為0
6、m=<media><port> <transport> <fmt list>, 一個會話描述包括幾個媒體描述。一個媒體描述以”m=”開始到下一個”m=”結束
<media>:表示媒體類型。有"audio", "video","application"(例白板信息), "data"(不向用戶顯示的數據) 和"control"(描述額外的控制通道)。這里有2個m,分別描述音頻和視頻
<port>:媒體流發往傳輸層的端口。取決於c=行規定的網絡類型和接下來的傳送層協議:對UDP為1024-65535;對於RTP為偶數
當分層編碼流被發送到一個單播地址時,需要列出多個端口。方式如下:
m=<media><port>/<number of ports> <transport> <fmt list>
對於RTP,偶數端口被用來傳輸數據,奇數端口用來傳輸RTCP包。
例:m=video 49170/2 RTP/AVP 31
端口49170和49171為第一對RTP/RTCP端口,49172和49173為第二對的端口。傳輸協議是RTP/AVP,媒體格式為31(媒體格式是rtp頭中payload參數對應的)
這里端口號5006,媒體格式111
7、a=rtcp-mux,表示rtp和rtcp復用一個端口
8、a=rtpmap:<payload type><encoding name>/<clock rate>[/<encodingparameters>]
a=rtpmap:<負載類型><編碼名>/<時鍾速率>[/<編碼參數>],負載類型就是m行描述的媒體類型,編碼名opus/vp8,時鍾速率48000,90000
9、a=fmtp:<format> <format specific parameters>,a=fmtp 用於DTMF數字信號、電話音和電話信號的RTP負載格式;
a=fmtp:<格式>< 格式特定參數>//定義指定格式的附加參數,這行不知道什么意思,應該是音頻相關信息
h264 sdp描述文件
v=0 o=- 0 0 IN IP4 127.0.0.1 s=- c=IN IP4 127.0.0.1 t=0 0 m=audio 5006 RTP/AVP 111 a=rtcp-mux a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10;useinbandfec=1 m=video 5004 RTP/AVP 125 a=rtcp-mux a=rtpmap:125 H264/90000 a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
基本一致,多了一行視頻描述信息