SDP协议相关介绍

简介: SDP协议介绍

[SDP协议介绍]


一、SDP协议介绍

SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用RTSP来实现.


二、SDP协议格式

SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。

<type>=[CRLF]

常见的fields有:

网络异常,图片无法展示
|


网络异常,图片无法展示
|

网络异常,图片无法展示
|


三、SDP协议例子:

下面是一个helix 流媒体服务器的RTSP协议中的SDP协议:

v=0 //SDP version

// o field定义的源的一些信息。其格式为:o=    

o=- 1271659412 1271659412 IN IP4 10.56.136.37 s=

i=   //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"

 

 

SDP协议学习笔记

在SIP协议的包含的内容是SDP时,应该把Content-Type设置成application/sdp。

SDP:Session Description Protocol

SDP格式:

Session description

v=  (protocol version)

o=  (owner/creator and session identifier)

s=  (session name)

i=* (session information)

u=* (URI of description)

e=* (email address)

p=* (phone number)

c=* (connection information - not required if included in all media)

b=* (zero or more bandwidth information lines)

One or more time descriptions ("t=" and "r=" lines, see below)

z=* (time zone adjustments)

k=* (encryption key)

a=* (zero or more session attribute lines)

Zero or more media descriptions

     Time description

t=  (time the session is active)

r=* (zero or more repeat times)

     Media description, if present

m=  (media name and transport address)

i=* (media title)

c=* (connection information - optional if included at

session-level)

b=* (zero or more bandwidth information lines)

k=* (encryption key)

a=* (zero or more media attribute lines)

以上带"*"号的是可选的,其余的是必须的。一般顺序也按照上面的顺序来排列。

a=*是sdp协议扩展属性定义,除上面以外的,分解时其它的都可以扔掉。

a=charset属性指定协议使用的字符集。一般的是ISO-10646。

示例:


v=    

其中:nettype是IN,代表internet,addrtype是IP4或IP6。unicast-address任务创建计算机的地址。

整个这个属性,是唯一表示一个任务。

e=123@126.com 或 p=+1 616 555-6011

对于一个任务只能两者之中的一个,表示会议控制者的联系方式。邮件地址可以是[email]j.doe@example.com[/email] (Jane Doe)形式,括号里面的是描述联系人的名称,或者Jane Doe <[email]j.doe@example.com[/email]>,前面的是联系人的名称。

c=  

这个连接数据,可以是传话级别的连接数据,或者是单独一个媒体数据的连接数据。在是多播时,connection-address就该是一个多播组地址,当是单播时,connection-address就该是一个单播地址。对于addrtype是IP4的情况下,connection-address不仅包含IP地址,并且还要包含a time to live value(TTL 0-255),如:c=IN IP4


224.2.36.42/128,IP6没有这个TTL值。还允许象这样的[/]/格式的connection-address。如:c=IN IP4 224.2.1.1/127/3等同于包含c=IN IP4 224.2.1.1/127, c=IN IP4 224.2.1.2/127, c=IN IP4 224.2.1.3/127三行内容。

b=: bwtype可以是CT或AS,CT方式是设置整个会议的带宽,AS是设置单个会话的带宽。缺省带宽是千比特每秒。

t= ,这个可以有行,指定多个不规则时间段,如果是规则的时间段,则r=属性可以使用。start-time和stop- time都遵从NTP(Network Time Protocol),是以秒为单位,自从1900以来的时间。要转换为UNIX时间,减去2208988800。如果stop-time设置为0,则会话没有时间限制。如果start-time也设置为0,则会话被认为是永久的。

r=  重复次数在时间表示里面可以如下表示:

d - days (86400 seconds)

h - hours (3600 seconds)

m - minutes (60 seconds)

s - seconds (allowed for completeness)

z=    ....

k=

k=:

a=

a=:

m=    ...

m= /   ...

其中:可以是,"audio","video", "text", "application" and "message"。是媒体传送的端口号,它依赖于c=和。 可以是,udp,RTP/AVP和RTP/SAVP。


a=cat:分类,根据分类接收者隔离相应的会话

a=keywds:关键字,根据关键字隔离相应的会话

a=tool:创建任务描述的工具的名称及版本号

a=ptime:在一个包里面的以毫秒为单位的媒体长度

a=maxptime:以毫秒为单位,能够压缩进一个包的媒体量。

a=rtpmap: / [/<encoding   parameters>]

a=recvonly

a=sendrecv

a=sendonly

a=inactive,

a=orient:其可能的值,"portrait", "landscape" and "seascape" 。

a=type:,建议值是,"broadcast", "meeting", "moderated", "test" and "H332"。

a=charset:

a=sdplang:指定会话或者是媒体级别使用的语言

a=framerate:设置最大视频帧速率

a=quality:值是0-10

a=fmtp:

在SIP协议的包含的内容是SDP时,应该把Content-Type设置成application/sdp。

 


SDP(Session Description Protocol)模型介绍


如果有哪里描述有误,或不准确,欢迎各位网友指正,可以及时讨论并修正。

 

情态动词术语解释:

"MUST",必须、一定要;

"MUST NOT",禁止;

"REQUIRED",需要;

"SHALL"、"SHOULD",应该;

"SHALL NOT"、"SHOULD NOT",不应该;

"RECOMMENDED",推荐;

"MAY",可以

以上情态动词术语可参考RFC2119[3],这些动词要求我们在产品实现时,需要遵守或灵活变更约束。

 

术语

媒体流(Media Stream),或称为媒体类型(Media Type),即我们通常所说的音频流、视频流等,所有通信实体要进行媒体交互之前都必须进行媒体注的协商

媒体格式(Media Format),每种媒体流都有不同的编码格式,像音频有G711、G712编码,视频有H261、H264等,像现在所谓的高清视频采用是720P、1070P等。

单一会话(Unitcast Session)

多会话(Multicast Sessions)

单一媒体流(Unitcast Streams)

多媒体流(Multicast Streams)

 

 

SDP(Session Description Protocol)

SDP(会话描述协议),用于两个会话实体之间的媒体协商,并达成一致,属信令语言族,采用文本(字符)描述形式。rfc3264协议[1]主要概述一个请求/响应模型(offer/answer,以下叙述采用英文),包括请求/响应的实体和不同阶段的操作行为,如初始协商过程和重协商过程,并简单介绍消息中各种参数的含义。具体各个参数的详细说明见rfc2327协议[2]。本文主要参照3264协议,大部分为直译,附加自己经验和理解。

相关文章
|
8月前
|
网络架构
ICMP协议(Internet控制消息协议)
本文详细的介绍ICMP协议,内含详细的实例解析,该文你值得拥有。
|
网络性能优化 网络架构 网络协议
|
23天前
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
49 0
|
3月前
|
编解码 网络协议 流计算
RTSP协议介绍
RTSP协议介绍
88 0
|
3月前
|
Linux C语言
RTSP协议的实现
RTSP协议的实现
30 0
|
7月前
|
搜索推荐 网络架构
RTP协议应用方案
RTP协议应用方案
50 0
|
Web App开发 编解码 网络协议
WebRTC SDP 详解和剖析
WebRTC 技术体系中,SDP 是看起来简单却坑非常多的点,就像直播中的时间戳几乎占据了 80% 的问题,SDP 也是问题频发的点。这篇文章详细分享了 SDP 的关键点,容易出问题的点,是非常实用的满满的干货。
WebRTC SDP 详解和剖析
|
数据安全/隐私保护 内存技术
SDP协议使用介绍二
Offer/Answer模型包括两个实体,一个是请求主体Offerer,另外一个是响应实体Answerer,两个实体只是在逻辑上进行区分,在一定条件可以转换。例如,手机A发起媒体协商请求,那么A就是Offerer,反之如果A为接收请求则为Offerer。
|
网络协议
Diameter协议
【本文转载于Diameter协议】 Diameter是计算机网络中使用的一个认证、授权和审计协议。它从功能更少的RADIUS协议进化而来,并且取代之。        Dimater应用通过添加新的命令或属性扩展基础协议,例如使用扩展认证 协议(EAP)。 与RADIUS协议比较        名字是一个单词游戏(从RADIUS,半径到DIAMETER,直径),从
5333 0