SDP 协议分析
来源:互联网 发布:什么是网络优化 编辑:程序博客网 时间:2024/06/15 11:15
一、SDP协议介绍
SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用RTSP来实现.
二、SDP协议格式
SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。
<type>=<value>[CRLF]
常见的fields有:
三、SDP协议例子:
下面是一个helix 流媒体服务器的RTSP协议中的SDP协议:
v=0 //SDP version
// o field定义的源的一些信息。其格式为:o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
o=- 1271659412 1271659412 IN IP4 10.56.136.37 s=<No title>
i=<No author> <No copyright> //session的信息
c=IN IP4 0.0.0.0 //connect 的信息,分别描述了:网络协议,地址的类型,连接地址。
c=IN IP4 0.0.0.0
t=0 0 //时间信息,分别表示开始的时间和结束的时间,一般在流媒体的直播的时移中见的比较多。
a=SdpplinVersion:1610641560 //描述性的信息
a=StreamCount:integer;2 //用来描述媒体流的信息,表示有两个媒体流。integer表示信息的格式为整数。
a=control:*
a=DefaultLicenseValue:integer;0 //License信息
a=FileType:string;"MPEG4" ////用来描述媒体流的信息说明当前协商的文件是mpeg4格式的文件
a=LicenseKey:string;"license.Summary.Datatypes.RealMPEG4.Enabled"
a=range:npt=0-72.080000 //用来表示媒体流的长度
m=audio 0 RTP/AVP 96 //做为媒体描述信息的重要组成部分描述了媒体信息的详细内容:表示session的audio是通过RTP来格式传送的,其payload值为96传送的端口还没有定。
b=as:24 //audio 的bitrate
b=RR:1800
b=RS:600
a=control:streamid=1 //通过媒体流1来发送音频
a=range:npt=0-72.080000 //说明媒体流的长度。
a=length:npt=72.080000
a=rtpmap:96 MPEG4-GENERIC/32000/2 //rtpmap的信息,表示音频为AAC的其sample为32000
a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210 //config为AAC的详细格式信息
a=mimetype:string;"audio/MPEG4-GENERIC"
a=Helix-Adaptation-Support:1
a=AvgBitRate:integer;48000
a=HasOutOfOrderTS:integer;1
a=MaxBitRate:integer;48000
a=Preroll:integer;1000
a=OpaqueData:buffer;"A4CAgCIAAAAEgICAFEAVABgAAAC7gAAAu4AFgICAAhKIBoCAgAEC"
a=StreamName:string;"Audio Track"
下面是video的信息基本和audio的信息相对称,这里就不再说了。
m=video 0 RTP/AVP 97
b=as:150
b=RR:11250
b=RS:3750
a=control:streamid=2
a=range:npt=0-72.080000
a=length:npt=72.080000
a=rtpmap:97 MP4V-ES/2500
a=fmtp:97 profile-level-id=1;
a=mimetype:string;"video/MP4V-ES"
a=Helix-Adaptation-Support:1
a=AvgBitRate:integer;300000
a=HasOutOfOrderTS:integer;1
a=Height:integer;240 //影片的长度
a=MaxBitRate:integer;300000
a=MaxPacketSize:integer;1400
a=Preroll:integer;1000
a=Width:integer;320 //影片的宽度
a=OpaqueData:buffer;"AzcAAB8ELyARAbd0AAST4AAEk+AFIAAAAbDzAAABtQ7gQMDPAAABAAAAASAAhED6KFAg8KIfBgEC"
a=StreamName:string;"Video Track"
INVITE sip:6002@192.168.68.251 SIP/2.0
Via: SIP/2.0/UDP 192.168.68.250:5060;branch=799cf7e0
From: "" <sip:7002@192.168.68.250>;tag=570bed9f
Contact: <sip:7002@192.168.68.250:5060>
To: <sip:6002@192.168.68.251>
Call-ID: Anta134396228109e9c0140ad69dbf@192.168.68.250
CSeq: 122686 INVITE
Max-Forwards: 70
User-Agent: ASG Switch
Alert-Info: <http://127.0.0.1/1>
Record-ID: 7002_2012080310512163915705
Content-Type: application/sdp
Content-Length: 276
v=0
o=root 2040330208 2040330208 IN IP4 192.168.68.250
s=session
c=IN IP4 192.168.68.250
t=0 0
m=audio 19402 RTP/AVP 0 8 18 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
=====================================
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.68.250:5060;branch=799cf7e0
To: <sip:6002@192.168.68.251>;tag=171533720078-1
From: ""<sip:7002@192.168.68.250>;tag=570bed9f
Call-ID: Anta134396228109e9c0140ad69dbf@192.168.68.250
CSeq: 122686 INVITE
Contact: <sip:6002@192.168.68.251:5060>
Content-Type: application/sdp
Content-Length: 211
v=0
o=- 1715338 273482 IN IP4 192.168.68.251
s=-
c=IN IP4 192.168.68.251
t=0 0
m=audio 10046 RTP/AVP 0 101
a=ptime:20
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
- SDP 协议分析
- SDP协议分析
- SDP 协议分析
- SDP 协议分析
- SDP 协议分析
- SDP 协议分析
- SDP协议分析
- SDP协议分析
- SDP 协议分析
- SDP协议分析
- SDP 协议分析
- SDP协议分析
- SDP 协议分析
- SDP协议分析
- SDP协议分析
- SDP协议分析
- SDP协议分析
- SDP协议分析
- C#读写记事本
- AFNetworking 学习笔记
- Linux文件缓冲区详解
- Dealing with bitmap object in android NDK
- HTML入门----简单网页制作
- SDP 协议分析
- XCode 4.5 提交App总是提示缺少“armv6”
- utf8编码文件的bom头
- Hibernate与 MyBatis的比较
- 将smartforms的输出结果另存为是PDF格式
- 在顺序存储模式下将所有的负数放到正数前面的三种算法
- Google莫斯科办公室里那个世界上最牛的程序员,这个程序员叫做Petr,他的感言...
- 【转】eclipse中禁用javadoc注释的Format功能
- 学习DNS查询