SDP在webrtc或voip通话中有重要的作用,它通过文本对媒体信息进行描述。其本身并不传递媒体数据,而是用于参与媒体会话的双方进行媒体协商。
通过SDP,通信双方可以知道对方的:支持的音视频编码器、网络信息以及其他重要信息。在webrtc中没有规定统一的信令,通常信令使用使用者自己实现。
下图是webrtc中sdp的作用:
三、格式规范
多个媒体级描述
(1) 媒体格式
(2) 传输协议
(3) 纯属IP和端口
(4) 媒体负载类型
一个会话级描述
(1) 会话的名称和目的
(2) 会话存活时间
(3) 会话中包括多个媒体信息
格式:type=value组成
(1) 会话层
v=(协议版本)
o=(所有者/创建者和会话标识符)
s=(会话名称)
c= * (连接信息 ― 如果包含在所有媒体中,则不需要该字段)
t=会话存活时间
a = * (0 个或多个会话属性行)
(2) 媒体层
m=(媒体名称和传输地址)
c=*(连接信息 ― 如果包含在所有媒体中,则不需要该字段)
b=*(带宽信息)
a = * (0 个或多个会话属性行)
ps:(带星号的是可选字段,不带的是必选)
字段含义详解:
1、version 必选
2、session name 必选
s= [sission name] 会话名;s=- 表示忽略会话
3、origion/owner 必选
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
eg. o=- 6474257184349789314 2 IN IP4 127.0.0.1
4、connection 可选
c=<network type><address type><connection address>
eg. c=IN IP4 0.0.0.0
5、media 必选
m=<media><port><transport><fmt/payload type list>
eg. m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126
6、attributes 可选
a=<TYPE> 或a=<TYPE>:<VALUE>
eg. a=frameate:<帧速率>
7、rtpmap 可选
a=rtpmap:<fmt/payload type><encoding name>/<clock rate>[/<encodingparameters>]
eg. a=rtpmap:111 opus/48000/2
8、fmtp 可选
a=fmtp:<format/payload type> paramerters
例子:a=fmtp:101 apt=100