RTSP协议

1、rtsp介绍
RTSP协议是有状态的协议,而HTTP是无状态的协议。RTSP通过维护一个session来维护其状态的转换。RTSP协议的默认端口是554,默认的承载协议为TCP。
RTSP消息格式:

RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种消息的格式不同。

请求消息(客户端向服务器发送的套接字内容):
方法 URI RTSP版本 CR LF

消息头 CR LF CR LF

消息体 CR LF

其中方法包括服务器响应OPTIONS命令后回应客户端的所有方法(OPTIONS也是一种方法,方法也可以称为命令),URI是接收方(服务端)的地址, RTSP版本一般都是RTSP/1.0。每行后面的CR LF表示回车换行,需要接收端有相应的解析,最后一个消息头需要有两个CR LF

回应消息(服务器向客户端发送的套接字内容):
RTSP版本 状态码 解释 CR LF

消息头 CR LF CR LF

消息体 CR LF

其中RTSP版本一般都是RTSP/1.0,状态码是一个数值,200表示成功,解释是与状态码对应的文本解释。

2、消息头(Header)字段
常用Header字段:
CSeq:顺序号,每次递增
User-Agent:客户程序信息
Server:服务程序信息
Session:标记一次点播过程
某些命令特有的Header字段:
Transport:SETUP时协商通道信息
Range:PLAY时标记播放位置
应用自定义字段(x-开头):
x-retransmit:Darwin的RUDP重传协商标记

3、RTSP协议:常用命令
DESCRIBE 询问媒体信息,
SETUP 创建传输通道
PLAY 开始播放
PAUSE 暂停播放
TEARDOWN 结束播放

OPTIONS 询问能力
ANNOUNCE 主动发布媒体
GET_PARAMETER 查询参数
SET_PARAMETER 设置参数

RTSP协议:DESCRIBE命令
获取媒体的描述信息:有哪些track,各个track的格式,控制方式等

请求消息:
DESCRIBE rtsp://192.168.182.8:8888/sample.mp4 RTSP/1.0
CSeq: 1
Accept: application/sdp
Bandwidth: 384000
Accept-Language: hr-HR
User-Agent: QuickTime/7.5.5 (qtver=7.5.5;os=Windows NT 5.2Service Pack 2)

RTSP协议:DESCRIBE命令应答
RTSP/1.0 200 OK
Server: DSS/6.0.3
Cseq: 1
Content-length: 753
Content-Type: application/sdp
Content-Base: rtsp://192.168.182.8:8888/sample.mp4/

v=0
<……skip……>

Content-Base用于后续SETUP命令构建URL
BODY信息中是SDP描述

SDP协议:参考http://blog.csdn.net/qq_39660930/article/details/77717190
一份全局信息,多份媒体信息
v=0
o=StreamingServer 3440750359 1231761553000 IN IP4 192.168.182.8
s=/home/drangon/sample_h264_100kbit.mp4
u=http:///
e=admin@
c=IN IP4 0.0.0.0
b=AS:2097172
t=0 0
a=control:*
a=isma-compliance:2,2.0,2
a=range:npt=0- 70.00000

m=video 0 RTP/AVP 96
a=3GPP-Adaptation-Support:1
a=rtpmap:96 H264/90000
a=control:trackID=3
a=framesize:96 192-242
a=fmtp:96 packetization-mode=1;profile-level-id=4D400C;sprop-parameter-sets=J01ADKkYYELxCA==,KM4JiA==
a=mpeg4-esid:201

rtpmap:RTP包说明,封装格式(h264),timestamp单位
control:track的控制信息
fmtp:媒体格式相关的参数,封装、解码相关

RTSP协议:SETUP命令
SETUP rtsp://192.168.182.8:8888/sample.mp4/trackID=3 RTSP/1.0
CSeq: 3
Transport: RTP/AVP;unicast;client_port=6972-6973
x-retransmit: our-retransmit
x-dynamic-rate: 1
x-transport-options: late-tolerance=1.400000
Session: 5154404056653789650
User-Agent: QuickTime/7.5.5

URL的计算,如何指定track?
DESCRIBE应答中:
Content-Base: rtsp://192.168.182.8:8888/sample.mp4/
SDP中:a=control:trackID=3
Transport,UDP传输方式,unicast,client_port

RTSP协议:SETUP命令的应答
RTSP/1.0 200 OK
Server: DSS/6.0.3
Cseq: 3
Session: 5154404056653789650
Transport: RTP/AVP;unicast;source=192.168.182.8;client_port=6972-6973;server_port=6970-6971;ssrc=18512542
x-Transport-Options: late-tolerance=1.400000
x-Retransmit: our-retransmit
x-Dynamic-Rate: 1

Transport,传输方式的协商结果,确认client_port,增加server_port,RTP/AVP表示传输方式为UDP方式

RTSP协议:SETUP的TCP传输
SETUP命令协商使用TCP方式
Transport: RTP/AVP/TCP;interleaved=2-3
RTSP连接中,内嵌二进制数据
四字节头,首字节“$”(0x24),用来区分正常RTSP请求还是内嵌二进制数据
第二字节是channel值,(interleaved时协商)
第三、四字节是长度,network order
后面是二进制数据(RTP、RTCP包)

RTSP协议:PLAY命令
PLAY rtsp://192.168.182.8:8888/sample.mp4 RTSP/1.0
CSeq: 4
Range: npt=5.000000-70.000000
x-prebuffer: maxtime=2.000000
x-transport-options: late-tolerance=10
Session: 5154404056653789650
User-Agent: QuickTime/7.5.5

Range,指定播放位置,实现SEEK操作,实时监视不支持
Speed,指定播放速度,实现快放慢放
连续多个PLAY的语义—播放列表

RTSP协议:其他命令
PAUSE命令:暂停(直播不支持)
OPTIONS命令:查询支持能力,返回支持的命令清单。有时会用来做TCP保活
SET_PARAMETER和GET_PARAMETER:参数读写,一般用于应用层
ANNOUNCE命令,一般用于录制,类似DESCRIBE,但方向不同,请求者直接提供SDP信息

undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值