1、SDP简介
在WebRTC的通信过程中,SDP是其中重要的协议。SDP(Session Description Protocol)全称是会话描述协议。主要用于两个会话实体之间的媒体协商。WebRTC引入SDP来描述媒体信息,用于媒体协商时决定双方是否可以进行通信,以及用何种方式进行通信。SDP作为WebRTC的信令系统的一部分,驱动着WebRTC的运转。从这个角度来说,SDP是WebRTC的灵魂。
2、标准SDP规范
标准SDP结构由一个会话级描述和多个媒体级描述组成,通常SDP中都会包含一个音频媒体描述和一个视频媒体描述。
每条描述信息都是 <type> = <value> 的形式("=" 两侧不允许有空格存在。)。其中,<type>是描述的目标,它由单个字符构成;<value>是对<type>的解释或约束。会话和媒体都有各自的<type>,另外还有一些公共的<type>。
常见的<type>如下:
2.1 会话级
v=(protocol version,协议版本)
o=(owener/creator and session identifier,会话的创建者)
s=(session name,会话名称)
t=(time the session is active,会话存活时间)
复制代码
2.2媒体级
m=(media,媒体)
复制代码
2.3公共
c=(connection information,网络信息)
a=(attribute,属性)
复制代码
这是一个典型简化后的的SDP示例:
v=0
o=- 5910110687297165449 2 IN IP4 127.0.0.1
s=-
t=0 0
...
//第一个媒体流,音频流
m=audio 54797 UDP/TLS/RTP/SAVPF 8
...
//第2个媒体流,视频流
m=video 9 UDP/TLS/RTP/SAVPF 125
...
复制代码
WebRTC对标准SDP规范做了一些调整,按功能分成会话描述和媒体描述。其中,会话描述属于标准SDP中的内容,通常我们不需要了解它。媒体描述中有WebRTC增加的内容,需要了解一下的。媒体描述的内容可以分成四个大类:媒体信息、网络描述、安全描述、和服务质量描述。如图所示:
3、媒体信息
媒体信息是标准SDP的内容,属于SDP中的核心内容。其格式如下所示:
m=<media><port>/<numbers><transport><fmt>
复制代码
<media>:媒体类型,audio、video等。
<port>/<numbers>:端口,通常不会被使用。
<transport>:传输协议,UDP、TCP等。
<fmt>:媒体数据类型,通常为Paylo