一、SDP协议简介

 

SDP(Session Description Protocol)是一种会话描述协议,用于描述多媒体会话的参数。它是一种文本协议,通常用于VoIP(Voice over Internet Protocol)和视频会议等应用中。SDP协议定义了一种标准的格式,用于描述会话的各种参数,包括媒体类型、媒体格式、媒体地址等。

SDP协议最初由IETF(Internet Engineering Task Force)在RFC 2327中定义,后来又在RFC 4566中进行了更新和扩展。SDP协议的主要作用是在会话开始前,将会话的参数信息传递给参与者,以便他们能够正确地配置和连接到会话。

二、SDP协议格式

SDP协议的格式由一系列的行组成,每行以一个字母开头,表示该行的类型。SDP协议定义了一些标准的行类型,包括v、o、s、c、t、m等。下面是一个简单的SDP协议格式示例:

v=0
o=- 123456 7890 IN IP4 192.168.1.1
s=My Session
c=IN IP4 192.168.1.1
t=0 0
m=audio 5004 RTP/AVP 0 8 18

在上面的示例中,v表示协议版本,o表示会话的起始者和会话ID,s表示会话名称,c表示连接信息,t表示会话的时间信息,m表示媒体信息。

三、会话描述参数

SDP协议定义了一系列的会话描述参数,用于描述会话的各种属性和参数。下面是一些常用的会话描述参数:

1.Version(必选)

Version参数用于指定SDP协议的版本号,当前版本为0。

2、origion(必选)

Origin参数用于指定会话的起始者和会话ID。它包括用户名、会话ID、版本号、网络类型和地址类型等信息。

3.Session Name(必选)

Session Name参数用于指定会话的名称,通常是一个简短的字符串。

4.Connection Data(可选)

Connection Data参数用于指定媒体流的连接信息,包括网络类型、地址类型和地址等信息。

5.Bandwidth(可选)

Bandwidth参数用于指定媒体流的带宽,通常以bps为单位。

6.Times(必选)

Times参数用于指定会话的时间信息,包括会话的起始时间和结束时间。

7.Media Announcements (必选)

Media Announcements参数用于指定媒体流的类型、格式和地址等信息。

8.rtpmap(可选)

rtpmap参数用于指定媒体流的编码格式和参数,通常以RTP(Real-time Transport Protocol)为基础。

四、SDP示例

下面是一些常见的SDP示例,用于描述不同类型的会话和媒体流。

1.媒体级会话VLC播放264视频的sdp文件

v=0
o=- 0 0 IN IP4 127.0.0.1
s=VLC media player
c=IN IP4 127.0.0.1
t=0 0
a=tool:vlc 2.2.4
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:streamid=0

2.媒体级会话VLC播放g711音频的sdp文件

v=0
o=- 0 0 IN IP4 127.0.0.1
s=VLC media player
c=IN IP4 127.0.0.1
t=0 0
a=tool:vlc 2.2.4
m=audio 5004 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=control:streamid=0

3.点播mp4文件,MS_H返回给终端的sdp信息

v=0
o=- 0 0 IN IP4 127.0.0.1
s=Session streamed by "MS_H"
i=sample.mp4
c=IN IP4 0.0.0.0
t=0 0
a=tool:libavformat 57.56.101
m=video 0 RTP/AVP 96
b=AS:1000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:trackID=1
m=audio 0 RTP/AVP 97
b=AS:128
a=rtpmap:97 MPEG4-GENERIC/44100/2
a=fmtp:97 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210
a=control:trackID=2

4.直播

v=0
o=- 0 0 IN IP4 127.0.0.1
s=Live Stream
c=IN IP4 0.0.0.0
t=0 0
a=tool:libavformat 57.56.101
m=video 0 RTP/AVP 96
b=AS:1000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:trackID=1
m=audio 0 RTP/AVP 97
b=AS:128
a=rtpmap:97 MPEG4-GENERIC/44100/2
a=fmtp:97 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210
a=control:trackID=2

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐