概述
SDP 是一种用于描述多媒体会话的协议,它本身并不用于传输媒体数据,而是提供了有关多媒体会话的信息,如会话名称、时间信息、媒体类型(音频、视频等)、传输地址等。这些信息使得参与会话的各方能够了解会话的细节,从而进行正确的媒体数据传输和处理。
SDP 协议格式
- SDP 消息是基于文本的,格式比较灵活,一般由多行文本组成,每行的格式为**<类型>=<值>**。例如:v=0,其中v是类型,表示 SDP 的版本,0是值。
SDP 主要字段解释
SDP示例:
| |
字段解释:
- v (版本)
- 格式:v=<版本号>
- 说明:目前版本号通常为 0。例如v = 0,用于标识 SDP 协议的版本。
- o (所有者/会话标识)
- s (会话名称)
- 格式: s=<会话名称>
- 说明: 例如s = Play,用于提供会话的名称,方便用户识别会话的内容。
- i (会话信息)
- 格式: i=<会话描述信息>
- 说明: 例如i = This is a sample media stream,
用于对会话进行更详细的描述,如媒体流的主题、用途等。
- c (连接信息)
- 格式: c=<网络类型> <地址类型> <连接地址>
- 说明: 例如c = IN IP4 127.0.0.1,它指定了媒体流的连接信息,
包括网络类型、地址类型和具体的连接地址。
- t (时间描述)
- 格式: t=<开始时间> <停止时间>
- 说明: 例如t = 0 0,表示会话的开始时间和停止时间,
0 0通常表示无限制,即会话一直有效。
- m (媒体描述)
- 格式: m=<媒体类型> <端口号> <传输协议> <有效载荷类型>
- 说明: 例如m = video 0 RTP/AVP 96,其中video表示媒体类型是视频,
0表示端口号(在实际使用中可能由 SETUP 请求等确定具体端口),
RTP/AVP是传输协议(实时传输协议 / 音频视频配置文件),
96是有效载荷类型。
每个媒体流(如音频、视频)都有一个或多个m字段来描述。
- a (属性)
- 格式: a=<属性名>:<属性值>
- 说明: 例如a = rtpmap:96 H.264/90000,用于进一步描述媒体流的属性,
如rtpmap属性用于说明有效载荷类型对应的编码格式和采样率等信息,
这里表示有效载荷类型 96 对应的是 H.264 编码格式,采样率是 90000Hz。
一般有多个。
- y (唯一标识)
- 格式: y=<唯一标识>
- 说明: 用于指定会话的唯一标识符(Unique Identifier)
SDP 在多媒体通信中的应用场景
在实时流媒体传输(如 RTSP 协议)中,当客户端发送 DESCRIBE 请求后,服务器会返回一个包含媒体流信息的 SDP 描述。客户端根据 SDP 中的信息,如媒体类型、编码格式、传输协议和端口号等,来配置自己的接收端,以便正确地接收和播放媒体流。例如,客户端可以根据 SDP 中的视频编码格式(如 H.264)来选择合适的解码器进行解码。
SDP 与其他协议的关系
与 RTSP 协议:RTSP 使用 SDP 来描述媒体资源。在 RTSP 的工作流程中,客户端通过 DESCRIBE 请求获取服务器提供的媒体资源的 SDP 描述,这是后续 SETUP、PLAY 等操作的基础。
与 RTP 协议:SDP 中的媒体描述部分(如m字段和a字段)为 RTP 协议传输媒体数据提供了必要的信息,包括端口号、有效载荷类型等,使得 RTP 能够准确地传输音频和视频数据。