SDP协议是什么,详解SDP协议
SDP(Session Description Protocol)是一种会话描述协议,用于描述多媒体会话的参数。它是一种文本协议,通常用于VoIP(Voice over Internet Protocol)和视频会议等应用中。SDP协议定义了一种标准的格式,用于描述会话的各种参数,包括媒体类型、媒体格式、媒体地址等。SDP协议最初由IETF(Internet Engineering Task Fo
一、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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)