RTSP概述
实时流协议(Real Time Streaming Protocol,RTSP)
是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。流数据本身的传输不是RTSP的任务。大多数RTSP服务器使用实时传输协议(RTP)和实时传输控制协议(RTCP)结合媒体流传输。
抓包准备
要分析RTSP的指令协商过程,最好的方法就是抓取TCP的数据包,并进行分析。Android上可以采用tcpdump
工具抓取TCP的包,然后通过Wireshark
工具导入进行分析。具体的工具使用不在这里介绍,大家可自行查找。最终抓取到的数据包如下图所示,通过Wireshark
的过滤功能我们可以很方便的过滤RTSP协议的数据包:
总结
针对Miracast RTSP协商、会话建立及流媒体传输,我们来进行一下总结。
- 在Source和Sink端的TCP连接成功建立之后,会马上进入到RTSP能力协商的阶段,主要涉及到
M1-M4
指令 - 能力协商的过程结束后,下一步则是WFD会话建立过程,主要涉及到
M5-M7
指令 - WFD会话成功建立后,将由Source端通过UDP连接发送RTP音视频数据包
- 通过
PAUSE、PLAY、TEARDOWN
等指令控制音视频流暂停、播放、关闭 - 通过
M16
指令来维持WFD长连接,确保会话处于正常的状态
我们可以使用下图来对整个WFD会话的生命周期进行总结: