二维码
找好货

扫一扫关注

当前位置: 首页 » 资讯 » 跨境电商 » 正文

RTSP协议交互流程之拉流分析

放大字体  缩小字体 发布日期:2022-07-27 14:00:03    作者:life    浏览次数:2840    评论:0
导读

0.引言 为了更好理解本篇文章,可以先阅读前面几篇文章,文章列表如下: 详解RTP打包AAC实战分析(1) 详解RTP协议之H264封包和解包实战 详解RTP协议之H264封包细节(1) 详细解析RTSP框架和数据包分析(1) 手把手搭建R

0.引言

为了更好理解本篇文章,可以先阅读前面几篇文章,文章列表如下:

详解RTP打包AAC实战分析(1)

详解RTP协议之H264封包和解包实战

详解RTP协议之H264封包细节(1)

详细解析RTSP框架和数据包分析(1)

手把手搭建RTSP流媒体服务器

RTP协议

HLS实战之Wireshark抓包分析

HTTP实战之Wireshark抓包分析


1.RTSP协议传输重要字段说明

(1)Accept:用于指定客户端可以接收的媒体描述信息类型。如下类型:

Accept: application/rtsl, application/sdp;level=2

(2)Bandwidth:描述客户端可⽤的带宽值。

(3)CSeq:指定了RTSP请求回应对的序列号,在每个请求或回应中都必须包括这个头字段。对每个包含⼀个给定序列号的请求消息,都会有⼀个相同序列号的回应消息。

(4)Rang:指定⼀个时间范围,可以使⽤SMPTE、NTP或clock时间单元。

(5)session:Session头字段标识了⼀个RTSP会话。Session ID是由服务器在SETUP的回应中选择的,客户端⼀当得到Session ID后,在以后的对Session的操作请求消息中都要包含Session ID

(6)Transport:Transport头字段包含客户端可以接受的传输选项列表,包括传输协议,地址端⼝TTL等。服务端也通过这个头字段返回实际选择的具体选项。如下所示:

Transport: RTP/AVP;multicast;ttl=127;mode="PLAY",

RTP/AVP;unicast;client_port=3456-3457;mode="PLAY"


2.RSTP协议

2.1 RSTP协议简述

RTSP有一个session概念,是一个文本协议。rtsp传输音视频数据,一种是tcp,一种是Udp方式。本节课主要是讲解udp的方式。这里推荐一个RTSP很详细的文档,如下地址:

https://blog.csdn.net/u012519333/article/details/52746375

如下界面:



RTSP(Real-Time Stream Protocol )是⼀种基于⽂本的应⽤层协议,在语法及⼀些消息参数等⽅⾯,RTSP协议与HTTP协议类似。RTSP被⽤于建⽴的控制媒体流的传输,它为多媒体服务扮演“⽹络远程控制”的⻆⾊。尽管有时可以把RTSP控制信息和媒体数据流交织在⼀起传送,但⼀般情况RTSP本身并不⽤于转送媒体流数据媒体数据的传送可通过RTP/RTCP等协议来完成。


2.2 RTSP协议与HTTP协议区别

(1)RTSP引⼊了⼏种新的⽅法,⽐如DESCRIBE、PLAY、SETUP 等,并且有不同的协议标识符。

(2)HTTP是⽆状态的协议,⽽RTSP会为每个会话保持状态session的概念。

(3)RTSP协议的客户端和服务器端都可以发送Request请求,⽽在HTTP协议中,只有客户端能发送Request请求。

(4)RTSP协议中,负载数据⼀般是通过带外⽅式来传送的(除了交织的情况),即通过RTP协议在不同的通道中来传送负载数据。⽽HTTP协议的载荷数据都是通过带内⽅式传送的,⽐如请求的⽹⻚数据是在回应。

(5)使⽤ISO 10646(UTF-8) ⽽不是ISO 8859-1,以配合当前HTML的国际化。

(6)RTSP使⽤URI请求时包含绝对URL。⽽由于历史原因造成的向后兼容性问题,HTTP/1.1只在请求中包含绝对路径,把主机名放⼊单独的标题域中的消息体中携带的。


2.3 RTSP协议传输,拉流基本流程

拉流时,基本的RTSP传输的重要步骤,如下:

(1)客户端连接到服务端并发送⼀个RTSP描述命令(DESCRIBE)。

(2)服务端通过⼀个SDP描述来进⾏反馈,反馈信息包括流数量、媒体类型等信息。

(3)客户端再分析该SDP描述,并为会话中的每⼀个流发送⼀个RTSP建⽴命令(SETUP),RTSP建⽴命令告诉服务器客户端⽤于接收媒体数据的端⼝。

(4)流媒体连接建⽴完成后,客户端发送⼀个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。

(5)在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。最后,客户端可发送⼀个终⽌命令(TERADOWN)来结束流媒体会话。

接下来,就通过实战抓包的方式,详细分析拉流过程。


3.拉流详细过程

3.1 查询服务器端可⽤⽅法

(1)C->S,客户端发送给服务器,首先发送OPTION request请求,目的是查询服务器有哪些⽅法可以使用。如下图:


(2)S->C,服务端回应客户端,发送OPTION response,目的是回应信息的public头字段中包括提供的所有可⽤⽅法,如PLAY、PAUSE、ANNOUNCE、RECORD等。如下图:


3.2 DESCRIBE得到媒体描述信息

(3)C->S,客户端发送服务端DESCRIBE request,目的是要求得到服务端提供媒体描述信息。如下图:


(4)S->C,服务端回应客户端:DESCRIBE response,目的是服务端回应媒体描述信息,⼀般是sdp信息(包含了音视频的描述信息)。如下图:


3.3 SETUP建⽴RTSP会话

(5)C->S,客户端发送服务端SETUP request,目的是通过Transport头字段列出可接受的传输选项,请求服务端建⽴会话。如下图:



(6)S->C,服务端回应客户端SETUP response,目的是服务端建立会话,通过Transport头字段返回选择的具体转输选项。如下图:


(7)C->S,客户端发送服务端PLAY request,目的是客户端请求服务端开始发送数据。如下图:


(7)S->C,服务端回应客户端,PLAY response,目的是服务端回应请求信息,音视频流都会包含在里面。如下图:


注意:如果流已经播放了一段时间,那最终是通过npt=起始时间来去获取实时流。客户端请求服务器推流,可以设置范围。



3.4 RTP数据传输和播放

(8)S->C,服务端回应客户端,目的是服务端发送流媒体数据,通过RTP协议传送数据。video 这⾥的ssrc 就是来⾃setup返回来的SSRC。如下图:


audio 这⾥的ssrc 就是来⾃setup返回来的SSRC。如下图:


3.5 TEARDOWN关闭会话,退出

(9)C->S,TEARDOWN request,目的是客户端请求关闭会话。如下图:


(10)S->C,TEARDOWN response,目的是服务端回应请求。如下图:



4.总结

本文主要讲解了RTSP协议在拉流过程中的详细分析,通过WireShark抓包分析每一步,能够帮助你更好的理解整个协议。但是要值得提醒的是,上述的过程只是标准的、友好的rtsp流程,实际的需求中并不⼀定按此过程。希望能够帮助到大家。欢迎关注,收藏,转发,分享。

后期关于项目知识,也会更新在微信公众号“记录世界 from antonio”,欢迎关注

 
关键词: rtsp协议
(文/life)
打赏
免责声明
• 
本文为life原创作品,作者: life。欢迎转载,转载请注明原文出处:https://www.114618.com/news/92719.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
0相关评论
 

(c)2008-2018 找好货 B2B SYSTEM All Rights Reserved

京ICP备2022008976号-2