RTSP协议抓包及讲解(三)

简介: RTSP协议抓包及讲解

RTSP协议抓包及讲解(二)https://developer.aliyun.com/article/1472296


4、方法定义

注: P----演示, S----流, C----用户端, S----服务器端

方法 方向 对象 要求 含义
DESCRIBE C -> S P,S 推荐 检查演示或媒体对象的描述,也允许使用接收头指定用户理解的描述格式。DESCRIBE 的答复-响应组成媒体 RTSP 初始阶段
ANNOUNCE C -> S

S->C
P,S 可选 当从用户发往服务器时,ANNOUNCE 将请求 URL 识别的演示或媒体对象描述发送给服务器;反之,ANNOUNCE 实时更新连接描述。如新媒体流加入演示,整个演示描述再次发送,而不仅仅是附加组件,使组件能被删除
GET_PARAMETER C -> S

S->C
P,S 可选 GET_PARAMETER 请求检查 URL 指定的演示与媒体的参数值。没有实体时,GET_PARAMETER 也许能用来测试用户与服务器的连通情况
OPTIONS C -> S

S -> C
P,S 要求 可在任意时刻发出 OPTIONS 请求,如用户打算尝试非标准请求,并不影响服务器状态
PAUSE C -> S P,S 推荐 PAUSE 请求引起流发送临时中断。如请求 URL 命名一个流,仅回放和记录被停止;如请求 URL 命名一个演示或流组,演示或组中所有当前活动的流发送都停止。恢复回放或记录后,必须维持同步。在 SETUP 消息中连接头超时参数所指定时段期间被暂停后,尽管服务器可能关闭连接并释放资源,但服务器资源会被预订
PLAY C -> S P,S 要求 PLAY 告诉服务器以 SETUP 指定的机制开始发送数据;直到一些 SETUP请求被成功响应,客户端才可发布 PLAY 请求。PLAY 请求将正常播放时间设置在所指定范围的起始处,发送流数据直到范围的结束处。PLAY 请求可排成队列,服务器将 PLAY 请求排成队列,顺序执行
RECORD C -> S P,S 可选 该方法根据演示描述初始化媒体数据记录范围,时标反映开始和结束时间;如没有给出时间范围,使用演示描述提供的开始和结束时间。如连接已经启动,立即开始记录,服务器数据请求 URL 或其他 URL 决定是否存储记录的数据;如服务器没有使用 URL 请求,响应应为 201(创建),并包含描述请求状态和参考新资源的实体与位置头。支持现场演示记录的媒体服务器必须支持时钟范围格式,smpte 格式没有意义
REDIRECT S -> C P,S 可选 重定向请求通知客户端连接到另一服务器地址。它包含强制头地址,指示客户端发布 URL 请求;也可能包括参数范围,以指明重定向何时生效。若客户端要继续发送或接收 URL 媒体,客户端必须对当前连接发送 TEARDOWN 请求,而对指定主执新连接发送 SETUP 请求
SETUP C -> S P,S 可选 对 URL 的 SETUP 请求指定用于流媒体的传输机制。客户端对正播放的流发布一个 SETUP 请求,以改变服务器允许的传输参数。如不允许这样做,响应错误为"455 Method Not Valid In This State”。为了透过防火墙,客户端必须指明传输参数,即使对这些参数没有影响
SET_PARAMETER C -> S

S -> C
P,S 要求 这个方法请求设置演示或 URL 指定流的参数值。请求仅应包含单个参数,允许客户端决定某个特殊请求为何失败。如请求包含多个参数,所有参数可成功设置, 服务器必须只对该请求起作用。服务器必须允许参数可重复设置成同一值,但不让改变参数值。注意:媒体流传输参数必须用 SETUP 命令设置。将设置传输参数限制为 SETUP 有利于防火墙。 将参数划分成规则排列形式, 结果有更多有意义的错误指示
TEARDOWN C -> S P,S 要求 TEARDOWN 请求停止给定 URL 流发送,释放相关资源。如 URL 是此演示 URL,任何 RTSP 连接标识不再有效。除非全部传输参数是连接描述定义的,SETUP 请求必须在连接可再次播放前发布

5、状态

RTSP 状态机

  RTSP 控制通过单独协议发送的数据流,与控制通道无关。例如,RTSP 控制可通过 TCP 连接,而数据流通过 UDP。因此,即使媒体服务器没有收到请求,数据也会继续发送。在连接生命期,单个媒体流可通过不同 TCP 连接顺序发出请求来控制。所以,服务器需要维持能与 RTSP 请求的连接状态联系流。 RTSP 中很多方法与状态无关,但下列方法在定义服务器流资源的分配与应用上起着重要的作用:

  • SETUP:让服务器给流分配资源,启动 RTSP 连接
  • PLAY 与 RECORD:启动 SETUP 分配流的数据传输
  • PAUSE:临时停止流,而不释放服务器资源
  • TEARDOWN:释放流的资源,RTSP 连接停止

标识状态的 RTSP 方法使用连接头段识别 RTSP 连接,为响应 SETUP 请求,服务器连接产生连接标识。

四、RTSP 与 HTTP

实时流协议在语法和操作上与 HTTP/1.1 类似,因此 HTTP 的扩展机制大都可加入 RTSP,然而,在很多重要方面 RTSP 仍不同于 HTTP:

  • RTSP 引入了大量新方法并具有一个不同的协议标识符
  • 在大多数情况下,RTSP 服务器需要保持缺省状态,与 HTTP 的无状态相对
  • RTSP 中客户端和服务器都可以发出请求
  • 在多数情况下,数据由不同的协议传输
  • RTSP 使用 ISO 10646(UTF-8) 而并非 ISO 8859-1,与当前的国际标准 HTML 相一致
  • URL 请求总是包含绝对 URL。为了与过去的错误相互兼容,HTTP/1.1 只在请求过程中传送绝对路径并将主机名置于另外的头字段
目录
相关文章
|
数据安全/隐私保护 Python
|
移动开发 网络协议 Windows
RTSP协议抓包及讲解(二)
RTSP协议抓包及讲解
472 1
|
11月前
|
编解码 监控 网络协议
如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频
本文详细介绍了如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频。内容涵盖环境搭建、编码配置、服务器端与客户端实现等方面,适合视频监控系统和直播平台等应用场景。通过具体命令和示例代码,帮助读者快速上手并实现目标。
2633 6
|
12月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
1079 0
|
存储 编解码 移动开发
RTSP协议抓包及讲解(一)
RTSP协议抓包及讲解
572 0
|
消息中间件 Kafka 程序员
Kafka内幕:详解Leader选举与副本同步的那些事儿
大家好,我是小米,今天给大家带来一篇关于 Kafka 核心机制的深度解析文章。本文将详细讲解 Kafka 的 Leader 选举、副本消息同步以及相关概念 LEO 和 HW,帮助大家更好地理解和应用 Kafka,提升处理分布式系统的能力。快来一起学习吧!
894 0
|
编解码 Shell
在jetson中实现ffmpeg调用硬件编解码加速处理
在jetson中实现ffmpeg调用硬件编解码加速处理
2913 1
|
编解码 网络协议 网络性能优化
RTP/RTCP 协议讲解
RTP/RTCP 协议讲解
1747 0
|
Web App开发 编解码 监控
RTSP协议探秘:从原理到C++实践,解锁实时流媒体传输之道
RTSP协议探秘:从原理到C++实践,解锁实时流媒体传输之道
4148 0