本文主要介绍Content-Type:application/sdp时的sip消息体。
Sdp协议
1. 概述
SDP是一种基于文本的协议,SDP协议的主要目的是在多媒体会话(如VoIP通话、视频会议等)开始前,将会话的参数信息传递给参与者,以便他们能够正确地配置和连接到会话。
2. 作用
SDP协议通过文本形式描述媒体信息,使得通信双方能够协商好双方具有的媒体能力。这些媒体信息包括媒体类型、媒体格式、媒体地址等,从而确保会话的顺利进行。SDP本身并不传递媒体数据,而是作为媒体协商的工具,为媒体数据的传输提供必要的参数信息。
3. 协议格式
SDP协议格式由一系列的行组成,这些行按照特定的顺序排列,共同构成了完整的会话描述。SDP协议定义了一些标准的行类型,包括v(协议版本)、o(会话的起始者和会话ID)、s(会话名称)、c(连接信息)、t(会话时间信息)、m(媒体信息)、a(属性字段)等。
4. 应用场景
SDP协议广泛应用于各种多媒体会话场景,如VoIP通话、视频会议、流媒体传输等。在这些场景中,SDP协议通过描述会话的媒体信息,使得通信双方能够协商好媒体参数,从而实现高质量的媒体传输。
Sip消息体
基于sdp协议的Sip消息体中关键字段描述:
v(协议版本):表示SDP的版本号,当前版本为0。
o(会话的起始者和会话ID):对会话的发起者进行了描述,包括发起者的用户名、会话ID、会话版本、发起者的网络类型、发起者的地址类型和发起者的地址等信息。
s(会话名称):指定会话的名称,通常是一个简短的字符串。可以包含字母、数字、空格和其他可打印字符。它为会话提供了一个易于识别的标签或名称,有助于参与者识别和区分不同的会话。
c(连接信息):表示媒体流的连接信息,包括网络类型、地址类型和地址等信息。这个字段对于确保媒体数据能够正确地传输到接收方至关重要。
t(会话时间信息):描述了会话的开始时间和结束时间,时间戳通常以NTP(Network Time Protocol)时间戳或UNIX时间戳的形式给出。NTP时间戳是自1900年1月1日以来的秒数(注意:这与常见的UNIX时间戳从1970年1月1日开始计算有所不同)。然而,在实际应用中,UNIX时间戳更为常见,因为它与现代操作系统的时间系统更为兼容。
m(媒体信息):描述了媒体流的类型、端口号、传输协议和媒体格式等信息。
//格式:
m=<type> <port> <protocol> <format list>
- <media>:媒体类型,如“audio”(音频)、“video”(视频)、“application”(应用程序)等。
- <port>:端口号,指定媒体数据将在哪个端口上传输。这个端口号通常与传输协议(<proto>)相关联。
- <proto>:传输协议,指定媒体数据使用的传输层协议。常见的协议包括“RTP/AVP”(RTP over UDP,实时传输协议/音频视频配置文件)、“TCP/RTP/AVP”(RTP over TCP)等。
- <fmt list>:媒体格式列表(音视频编解码格式),用空格分隔的负载类型(payload type)列表,表示该媒体流支持的具体格式(编解码格式)。
流媒体格式,参见:流媒体格式-CSDN博客
负载类型(PT),参见: 负载类型(PT)-CSDN博客
a=(属性字段):用于描述会话或媒体流的额外属性,如编码方式、带宽需求等。m中格式列表中的每个PT值都通过a=rtpmap:属性与具体的编码格式相关联。
//格式:
a=<attribute>:<value> 编解码器/时钟频率
a=<attribute>:<value> 额外参数=参数值
常见的SDP属性示例:
1)Rtpmap:用于指定RTP(Real-time Transport Protocol)负载类型与媒体编码格式之间的映射。
例:a=rtpmap:8 PCMA/8000属性用于将PT值8映射到具体的编码格式和采样率上。
2)Fmat:这个字段为特定的媒体类型(如音频、视频)提供了额外的编解码器或传输参数,以便接收方能够正确地解码和播放媒体数据。
3)Ptime:用于指定RTP(Real-time Transport Protocol,实时传输协议)流的每个数据包的音频数据持续时间(以毫秒为单位)。
4)sendrecv、recvonly、sendonly:这些属性用于指示媒体流的发送和接收状态。