RTSP 是 Internet 协议规范,是 TCP/IP 协议体系中的一个应用层协议级网络通信系统。专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器。该协议用于在端点之间建立和控制媒体会话。媒体服务器的客户端发出 VHS 样式的命令,例如:PLAY、PAUSE、SETUP、DESCRIBE、RECORD 等等。以促进对从服务器到客户端或从客户端到服务器的媒体流进行实时控制。
RTSP 传输过程
-
当用户或应用程序尝试从远程源流式传输视频时,客户端设备会向服务器发送 RTSP 请求,以确定可用选项,例如 PLAY,PAUSE、SETUP。。。
-
然后,服务器返回它可以通过 RTSP 接受的请求类型的列表。
-
客户端知道如何发出请求后,便将媒体描述请求发送到流服务器。
-
服务器以媒体描述作为响应。
-
客户端从那里发送设置请求,服务器以有关传输机制的信息作为响应。
-
设置过程完成后,客户端将通过告诉服务器使用设置请求中指定的传输机制发送位流(二进制序列)来启动流传输过程。
客户端 ->服务器:DESCRIBE
服务器 ->客户端: 200 OK (SDP)
客户端 ->服务器:SETUP
服务器 ->客户端: 200 OK
客户端 ->服务器:PAUSE
...
协议的分析和学习少不了抓包,截屏个 RTSP 协议抓包的图:
为什么 RTS 协议那么重要
-
RTSP 最初是一种允许用户直接从 Internet 播放音频和视频,而不必将媒体文件下载到其设备的方法。该协议已被应用于多种用途,包括互联网摄像机站点,在线教育和互联网广播。
-
RTSP 使用与基本 HTTP 相同的概念,在很大程度上是为了兼容现有的 Web 基础结构。正因如此,HTTP 的扩展机制大都可以直接引入到 RTSP 中。
-
RTSP 协议还具有很大的灵活性。客户端可以请求他们要使用的功能,以找出媒体服务器是否支持它们。同样,拥有媒体的任何人都可以从多个服务器传递媒体流。该协议还旨在适应媒体的未来发展,以便媒体创建者可以在必要时修改协议。
RTSP 协议指令
尽管 RTSP 在某些方面类似于 HTTP,但它定义了可用于控制多媒体播放的控制序列。尽管 HTTP 是无状态的,但 RTSP 却具有状态。
在需要跟踪并发会话时使用标识符。像 HTTP 一样,RTSP 使用 TCP 来维护端到端连接,端口号为 554。
尽管大多数 RTSP 控制消息是由客户端发送到服务器的,但是某些命令却是朝着另一个方向(即从服务器到客户端)传递的。
下面我们来介绍基本的 RTSP 请求:
SETUP
SETUP 请求指定必须如何传输单个媒体流。必须在发送 PLAY 请求之前完成此操作。
该请求包含媒体流 URL 和传输说明符。
该说明符通常包括一个本地端口,用于接收 RTP 数据(音频或视频),另一个用于 RTCP 数据(元信息)。
服务器答复通常会确认选定的参数,并填写缺少的部分,例如服务器的选定端口。必须先使用 SETUP 配置每个媒体流,然后才能发送聚合播放请求。
【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~
PLAY
PLAY 请求将导致播放一个或所有媒体流。可以通过发送多个 PLA