概述

SDP 是一种用于描述多媒体会话的协议,它本身并不用于传输媒体数据,而是提供了有关多媒体会话的信息,如会话名称、时间信息、媒体类型(音频、视频等)、传输地址等。这些信息使得参与会话的各方能够了解会话的细节,从而进行正确的媒体数据传输和处理。

SDP 协议格式

  • SDP 消息是基于文本的,格式比较灵活,一般由多行文本组成,每行的格式为**<类型>=<值>**。例如:v=0,其中v是类型,表示 SDP 的版本,0是值。

SDP 主要字段解释

SDP示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
v=0
o=34020000001320000001 0 0 IN IP4 192.168.0.2
s=Play
c=IN IP4 192.168.0.2
t=0 0
m=video 30004 RTP/AVP 96 97 98 99
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
a=rtpmap:99 H265/90000
y=0102008691

字段解释:

  • v (版本)
    • 格式:v=<版本号>
    • 说明:目前版本号通常为 0。例如v = 0,用于标识 SDP 协议的版本。
  • o (所有者/会话标识)
    • 格式: o=<用户名> <会话ID> <版本> <网络类型> <地址类型> <地址>
    • 说明: 例如o=- 2987346807 2987346807 IN IP4 127.0.0.1
      其中-表示用户名未指定,2987346807是会话 ID,
      IN表示网络类型为 Internet,IP4表示 IP 地址类型是 IPv4,
      127.0.0.1是地址。
      这个字段用于标识会话的所有者和会话本身的标识信息。
  • 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 能够准确地传输音频和视频数据。