rtcp

rtsp协议作用

流媒体播放控制

以URL形式向客户端发布流媒体文件信息

 

 

Rtsp报文顺序

OPTION

 DESCRIBE

 SETUP

 PLAY

 TEARDOWN

 

OPTION 获取服务器/客户端支持的能力集

 

DESCRIBE ip地址+端口+文件路径+rtsp版本

从服务器获取流媒体文件格式信息一般是sdp

从服务器获取流媒体文件传输信息一般是sdp长度

Setup与服务器协商流媒体传输方式(tcp/udp),建立RTP通道

 

Play与服务器协商流媒体播放

播放时间

播放速度

 

TEARDOWN

拆除连接

 

SDP(Session DescriptionProtocol)

多媒体应用层控制协议

基于文本

会话建立过程中的媒体类型和编码方案的协商

Sdp格式

v = (协议版本)

o = (所有者/创建者和会话标识符)

s = (会话名称)

i = * (会话信息)

u = * (URI 描述)

e = * (Email 地址)

p = * (电话号码)

c = * (连接信息)

b = * (带宽信息)

z = * (时间区域调整)

k = * (加密密钥)

a = * (0 个或多个会话属性行)

时间描述:

t = (会话活动时间)

r = * (0或多次重复次数)

媒体描述:

m = (媒体名称和传输地址)

i = * (媒体标题)

c = * (连接信息 — 如果包含在会话层则该字段可选)

b = * (带宽信息)

k = * (加密密钥)

a = * (0 个或多个媒体属性行)

 

 

RTSP(Real Time StreamingProtocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议。

SIP(Session Initiation Protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。

Sip可以rtsp相互转换。

 

sip和rtsp都是应用层的控制协议,负责一次通信过程的建立和控制和结束,不负责中间的传输部分。他们都是基于纯文本的信令协议,穿墙性能良好。支持tcp、udp,支持多方通信。他们都需要服务器支持,都支持会话中重定向。sip和rtsp 都使用sdp协议来传送媒体参数,使用rtp(rtcp)协议来传输媒体流。

 

区别:rtsp是专门为流媒体制定的协议,在多个媒体流的时间同步方面比sip强大。rtsp还提供网络负载均衡的功能,减轻服务器压力和网络带宽要求。sip一般用来创建一次音频、视频通话(双向),而rtsp一般用来做视频点播、视频监控等(单向)。Sip一般用来做双向的。

 

Rtsp代码地址

http://blog.csdn.net/dxpqxb/article/details/7991684

 

 

 

 

在MSRP协议中,涉及到了SDP协议。

SDP协议:

"m=..."表示一个需要传送的文件,如果需要有多个文件,就需要多行这个内容。如果在多行内容的情况下,文件接收者,可以把不想要的文件

 

的行,端口号设置成零,就可以通知发送者不传送啦。

还可以包含filetype,filesize,hash,filename,icon,disposition等扩展信息。

"i=..."是一个可以看得懂的文字信息。

对于一个文件的接收者,它必须在SDP协议中包含recvonly属性,而对于一个文件送者,必须包含sendonly属性。

文件选择器(file selector),必须包含'hash', 'filename', 'filesize', or 'filetype'其中一个。在文件传送的倡议者打的SDP协议中,也

 

必须包含其中之一。

 

如果响应者是一个文件接收者,则在收到发起者发送过来的信息后,必须要创建一个SDP回应包,其中必须包含recvonly,而且如果发起者包里

 

面有'filetype', 'filesize',or 'filename'属性,在SDP回应包里面也要包含相同内容,表示同意。但是不能包含'icon', 'hash', or  'disposition'属性。

但是如果响应者是一个文件发送者,则在创建SDP回应包时,必须包含sendonly,可以包含所有的文件相关属性。如果根据请求者检索出来的文件数多于一个,则拒绝文件传送,这是SDP协议要求,后续的SDP可能会支持多文件。

 

SDP:

     Session description

        v=  (protocol version)

        o=  (owner/creator and sessionidentifier)

        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 transportaddress)

        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=0

o=<username> <sess-id><sess-version> <nettype> <addrtype> <unicast-address>

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

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

e=123@126.com

p=+1 616 555-6011

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

 

系人的名称,或者Jane Doe <j.doe@example.com>,前面的是联系人的名称。

c=<nettype> <addrtype><connection-address>

这个连接数据,可以是传话级别的连接数据,或者是单独一个媒体数据的连接数据。在是多播时,connection-address就该是一个多播组地址

 

,当是单播时,connection-address就该是一个单播地址。对于addrtype是IP4的情况下,connection-address不仅包含IP地址,并且还要包含

 

a time to live value(TTL 0-255),如:c=IN IP4224.2.36.42/128,IP6没有这个TTL值。

还允许象这样的<base multicast address>[/<ttl>]/<number ofaddresses>格式的connection-address。如:

c=IN IP4 224.2.1.1/127/3等同于包含c=IN IP4224.2.1.1/127, c=IN IP4 224.2.1.2/127, c=IN IP4 224.2.1.3/127三行内容。

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

t=<start-time> <stop-time>,这个可以有行,指定多个不规则时间段,如果是规则的时间段,则r=属性可以使用。start-time和stop-time都

 

遵从NTP(Network Time Protocol),是以秒为单位,自从1900以来的时间。要转换为UNIX时间,减去2208988800。如果stop-time设置为0,则会

 

话没有时间限制。如果start-time也设置为0,则会话被认为是永久的。

r=<repeat-interval> <activeduration> <offsets from start-time>重复次数

在时间表示里面可以如下表示:

     d - days (86400 seconds)

     h - hours (3600 seconds)

     m - minutes (60 seconds)

     s - seconds (allowed for completeness)

z=<adjustment time> <offset><adjustment time> <offset> ....

k=<method>

k=<method>:<encryption key>

a=<attribute>

a=<attribute>:<value>

m=<media> <port> <proto><fmt> ...

m=<media> <port>/<number ofports> <proto> <fmt> ...

其中:<media>可以是,"audio","video", "text","application" and "message"。<port>是媒体传送的端口号,它依赖于c=和<proto>。

 

<proto> 可以是,udp,RTP/AVP和RTP/SAVP。

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

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

a=tool:<name and version of tool>创建任务描述的工具的名称及版本号

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

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

a=rtpmap:<payload type> <encodingname>/<clock rate> [/<encoding  parameters>]

a=recvonly

a=sendrecv

a=sendonly

a=inactive,

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

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

a=charset:<character set>

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

a=framerate:<frame rate>设置最大视频帧速率

a=quality:<quality>值是0-10

a=fmtp:<format> <format specificparameters>

 

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

 

 

Rtp已上传至论坛

 

rtsp流,具体步骤如下:

1.    下载安装VLC播放器(VLC播放器既可以做播放器,又可以作为流媒体服务器)

2.    选择媒体”-->“,选择一种视频输入源,点击串流

3.    来源部分保持默认,直接“next”

4.    目标设置中,选择rtsp或者http协议,点击"添加,设置端口号和输出流的名称,点击”next“

 

 

 

5.    选择视音频编码输出格式,默认为h.264+mp3格式,点击”next“


6.    最后点击”stream“即可获得http或者rtsp协议输出的流。

 

Rtsp开源码http://www.codeforge.cn/article/243097

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值