浅尝RTSP

news/2024/5/18 15:29:15 标签: 网络, udp, tcp/ip

RTSP (real time streaming protocol) RTC2326

RTSP 实时流传输协议,是TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学, 网景和realnetworks公司提交的IETF RTC 标准,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。
RTSP在体系结构上位于 rtp 和 rtcp 之上,它使用TCP或UDP完成数据传输。

rtsp 协议层级

HTTP 与 RTSP 相比,http 请求由客户机发出,服务端做出响应;使用RTSP时,客户机和服务器都可以发出请求,rtsp是双向的。
rtsp是用来控制音频或视频的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协议并不在其定义的范围内,服务端可以自行选择使用tcp或者udp 来传送串流内容,它的语法和运作跟http 1.1类似,但并不强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制,除了可以降低服务器端的网络用量,更进而支持多方视讯会议。
SDP (session description protocol) 会话描述协议
rtp realtime transfer protocol 实时传输协议
用来控制声音或视频的多媒体串流协议,RTSP提供了一个 可扩展框架,使实时数据,如音频与视频的受控,点播成为可能。
媒体数据一般使用rtp rtcp协议
一般使用udp作为传输层。
适合IPTV场景。
数据源包括现场数据与存储在文件中的数据。
该协议的目的在于控制多个数据发送连接,为发送选择通道,如udp,多播udp与tcp提供途径,并为选择基于rtp上发送机制提供方法,传输时所用的网络通讯协定,并不在其定义的范围内,服务器端可以自行选择使用tcp或udp来传输串流内容,比较能容忍网络延迟。

简介

rtsp是基于文本的协议,采用iso10646字符集,使用utf-8编码(rfc2279)方案。
行以CRLF中断(\r\n:10,13:ox0a,0x0d),包括消息类型,消息头,消息体和消息长。
但接收者本身可将CR和LF解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口采用sdp作为描述语言。
rtsp协议支持
rtsp建立并控制一个或几个时间同步的连续流媒体,尽管连续媒体流与控制流交换是可能的,通常它本身并不发送连续流,换言之,rtsp充当多媒体服务器的网络远程控制。
rtsp连接没有绑定到传输层连接,如tcp。在rtsp连接期间。rtsp用户可打开或关闭多个服务器的可传输连接以发出rtsp请求。
此外可使用无连接传输协议,如udp
rtsp流控制的流可能用到rtp,但rtsp操作不依赖用于携带连续流媒体的传输机制。

协议支持的操作如下:
rtsp协议支持

  1. 从媒体服务器上检索媒体: 用户可通过http或其他方法提交一个演示描述。如演示是组播,演示式就包含用于连续媒体的组播地址和端口。如演示仅通过单播发送给用户,用户为了安全应提供目的端口
  2. 媒体服务器邀请进入会议:媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。
  3. 将媒体加到现成讲座中:如服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。如HTTP/1.1中类似,rtsp请求可由代理,通道与缓存处理。

协议格式

请求消息

请求消息
请求消息由请求行,标题行中的各种标题域和主体实体组成。
请求行和标题行由ASCII 字符组成。
请求消息格式
其中方法包括option describe setup play pause teardown等
url是接收方的地址,例如rtsp://192.168.0.1/video.264
rtsp 版本一般都是 rtsp/1.0
每行后面的CRLF 表示回车换行,需求接收端有相应的解析,最后一个消息头需要有两个CRLF
消息是可选的,有的请求消息并不带消息体

应答消息

应答消息
rtsp版本一般都是 RTSP/1.0
状态码是一个数值,用于表示请求消息的执行结果,比如200表示成功。
短语是状态码对应的文本解释。

交互过程

rtsp交互过程
(1)OPTION
client —> server
c—>s
客户端向服务器端发送option,请求可用的方法。
s—>c
服务端回复客户端,消息中包含当前可用的方法。
option

(2) DESCRIBE

c—>s
客户端向服务器请求媒体描述文件,一般通过rtsp开头的url 来请求发起,格式为sdp
s—>c
服务器回复客户端sdp文件,该文件告诉客户端服务器有哪些音视频流,有什么属性,如编解码信息,帧率等。

在这里插入图片描述
(3)SETUP
为音视频数据的传输准备通道
c—>s
客户端向服务器端发起建立连接请求,请求建立会话连接,准备开始接受音视频数据,请求信息描述了期望音视频数据包基于udp还是tcp传输,指定rtp rtcp端口,以及是单播还是组播等信息。
s—>c
服务器端收到客户端请求后,根据客户端请求的端口号确定发送控制数据的端口以及音视频数据的端口

setup
(4)PLAY
c—>s
客户端向服务器请求播放媒体
s—>c
服务器回复客户端200 ok 之后开始通过setup 中指定的端口开始发送数据
在这里插入图片描述
(5)TEARDOWN
c—>s
结束播放时,客户端向服务器发起结束请求
s—>c
服务端收到消息后,向客户端发送200 ok,之后断开连接

rtsp抓包附件


http://www.niftyadmin.cn/n/370587.html

相关文章

chatgpt赋能python:Python中cwd的介绍与使用

Python中cwd的介绍与使用 在Python编程中,经常需要获取当前工作目录(current working directory,缩写为cwd),以便进行文件操作、路径拼接等操作。本文将介绍如何使用Python中的os模块和pathlib模块获取和修改cwd&…

MQTT(3):MQTT协议原理

官方文档中对于MQTT协议包的结构有着具体的说明:http://mqtt.org/documentation 在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload&…

Vue3 常用的Composition API

setup配置项 理解: Vue3.0中一个新的配置项,值为一个函数。 setup是所有Composition API (组合API) “ 表演的舞台”。 组件中所用到的:数据、方法等等,均要配置在setup中。 setup函数的两种返回值: 若返回一个对象,则对象中的属性、方法,在模板中均可…

WiFi 6 vs WiFi 5

在现代无线通信领域,WiFi已经成为人们日常生活中不可或缺的一部分。随着技术的不断发展,WiFi标准也在不断更新和演进。WiFi 6(802.11ax)和WiFi 5(802.11ac)是当前两个主要的WiFi标准。 本文将详细介绍WiFi …

7 种常见的路由协议

网络路由是网络通信的重要组成部分,通过互联网将信息从源地址移动到目的地的过程。路由发生在 OSI 模型的第 3 层(网络层)。实际网络中通常会将静态和动态路由结合使用。静态路由适用于小型网络,而动态路由适用于大型网络。 什么…

华为OD机试真题B卷 Java 实现【狼羊过河】,附详细解题思路

一、题目描述 一农夫带着m只羊,n只狼过河,农夫有一条可载x只狼/羊的船;农夫在时或者羊的数量大于狼时,狼不会攻击羊; 农夫在不损失羊的情况下,运输几次可以完成运输? 返程不计入次数。 二、…

linux互斥锁(pthread_mutex)知识点总结

对于多线程程序来说,我们往往需要对这些多线程进行同步。同步(synchronization)是指在一定的时间内只允许某一个线程访问某个资源。而在此时间内,不允许其它的线程访问该资源。我们可以通过互斥锁(mutex)&a…

nodejs+vue社区母婴幼儿用品商城系统

本系统实现了管理员对用户、商品信息、交流论坛、订单信息的管理,是为了满足用户更深层次的需求。除了上述优势外,本系统还具有:查询迅速,搜索资料方便,可靠性强等等在如今这个高速发展的时代,效率决定着你…