webrtc sdp详解

SDP(Session Description Protocol)是一种通用的会话描述协议,主要用来描述多媒体会话,用途包括会话声明、会话邀请、会话初始化等。

WebRTC主要在连接建立阶段用到SDP,连接双方通过信令服务交换会话信息,包括音视频编解码器(codec)、主机候选地址、网络传输协议等。

协议版本号
v=0
会话发起者
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
各字段含义如下:

username:发起者的用户名,不允许存在空格,如果应用不支持用户名,则为-。
sess-id:会话id,由应用自行定义,规范的建议是NTP(Network Time Protocol)时间戳。
sess-version:会话版本,用途由应用自行定义,只要会话数据发生变化时(比如编码),sess-version随着递增就行。同样的,规范的建议是NTP时间戳。
nettype:网络类型,比如IN表示Internet。
addrtype:地址类型,比如IP4、IV6
unicast-address:域名,或者IP地址。

连接数据:c=

格式如下:

c=<nettype> <addrtype> <connection-address>

每个SDP至少需要包含一个会话级别的c=字段,或者在每个媒体描述后面各包含一个c=字段。(媒体描述后的c=会覆盖会话级别的c=

  • nettype:网络类型,比如IN,表示 Internet。
  • addrtype:地址类型,比如IP4IP6
  • connection-address:如果是广播,则为广播地址组;如果是单播,则为单播地址;

举例01:

c=IN IP4 224.2.36.42/127

举例02:

c=IN IP4 host.anywhere.com

媒体描述:m=

SDP可能同时包含多个媒体描述。格式如下:

m=<media> <port> <proto> <fmt> ...

其中:

  • media:媒体类型。包括 video、audio、text、application、message等。
  • port:传输媒体流的端口,具体含义取决于使用的网络类型(在c=中声明)和使用的协议(proto,在m=中声明)。
  • proto:传输协议,具体含义取决于c=中定义的地址类型,比如c=是IP4,那么这里的传输协议运行在IP4之上。比如:
    • UDP:传输层协议是UDP。
    • RTP/AVP:针对视频、音频的RTP协议,跑在UDP之上。
    • RTP/SAVP:针对视频、音频的SRTP协议,跑在UDP之上。
  • fmt:媒体格式的描述,可能有多个。根据 proto 的不同,fmt 的含义也不同。比如 proto 为 RTP/SAVP 时,fmt 表示 RTP payload 的类型。如果有多个,表示在这次会话中,多种payload类型可能会用到,且第一个为默认的payload类型。

举例,下面表示媒体类型是视频,采用SRTP传输流媒体数据,且RTP包的类型可能是122、102...119,默认是122。

m=video 9 UDP/TLS/RTP/SAVPF 122 102 100 101 124 120 123 119

对于 RTP/SAVP,需要注意的是,payload type 又分两种类型:静态类型,动态类型(在a=fmtp:里进行定义)

举例,下面的SDP中:

  1. 对于audio,111 是动态类型,表示opus/48000/2<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值