Session description
必需的
i=* (session information)
u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information - not required if included in all media)
b=* (zero or more bandwidth information lines)
One or more time descriptions
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
sdp
m=video //一个媒体类型,传输协议:UDP/TLS/RTP,编码:96(VP8),98(VP9),102(H264)
c=IN IP4 0.0.0.0 //本端用于传输的ip
a= //媒体的属性
属性
a | 说明 |
---|---|
rtpmap | rtp映射表,含编码、带宽 |
-
如果本端媒体有recv属性,则本端媒体在offer/answer流程前准备好ip和端口接收媒体
-
offer/answer的媒体流数和顺序必需一致(即m标签)。如果遇到不支持的媒体流,对应的answer的m标签端口为0
-
offer的媒体流为sendonly,answer的媒体流必需为recvonly;offer的媒体流为recvonly,answer的媒体流必需为sendonly
-
answer里提供的IP和端口,只是offer期望的IP和端口,一旦answer发出后,offer必须准备好在这个IP和端口
-
offer如果有ptime(媒体流打包间隔)或bandwidth(带宽)的a行,answer也必需有。这两个a行用来打包媒体流用
-
一个m行可有多个a行
主要信息
SDP包括以下一些方面:
1) 会话的名称和目的
2) 会话存活时间
3) 包含在会话中的媒体信息,包括:
媒体类型(video, audio, etc)
传输协议(RTP/UDP/IP, H.320, etc)
媒体格式(H.261 video, MPEG video, etc)
多播或远端(单播)地址和端口
4) 为接收媒体而需的信息(addresses, ports, formats and so on)
5) 使用的带宽信息
6) 可信赖的接洽信息(Contact information)
解析
a=<属性>:<值>
c=<网络类型><地址信息><连接地址>
m=<媒体><端口><传送><格式列表>
o=<用户名><会话id><版本><网络类型><地址类型><地址>
s=<会话名>
t=<开始时间><结束时间> //单位秒,十进制NTP
v=0
注:v,o,s,t,m为必须的,其他项为可选。
- m的a标签
a=fmtp:<格式>< 格式特定参数>//定义指定格式的附加参数
a=ice-ufrag:iaqyowvyltDNYRLX
a=ice-pwd:ZSUXCPzCMZSpMOoPPQgaCgOJwoYzyeVF
ice过程的安全验证信息
webRTC中的SDP
按功能分,可以分为如下几块:
Session Metadata,会话元数据(v= / o= / t= )
Network Description,网络描述(c= / a=candidate)
Stream Description,流描述(m= / a=rtpmap / a=fmtp)
Security Descriptions,安全描述(a=crypto / a=ice-frag /a=ice-pwd / a=fingerprint)
Qos Grouping Descriptions, 服务质量描述(a=rtcp-fb / a=group / a=rtcpmux)
参考
https://blog.youkuaiyun.com/xyblog/article/details/49741267
https://www.cnblogs.com/onlycoder/p/7297362.html
https://blog.youkuaiyun.com/qq_34732729/article/details/105773613
https://www.jianshu.com/p/c6b1cf260616