前言
- 为什么要写这个系列?
因为我自己在学习rtsp协议想自己从零写一个rtsp服务器的时候,由于rtsp比较复杂,所以觉得这个过程非常的困难,网上许多相关文章或模棱两可,或是复制粘贴。所以想写这样一个系列,来帮助想要学习rtsp协议或者想要从零写一个rtsp服务器的初学者
- 本系列的文章特点
并系列文章实现追求精简,能够让人明白rtsp协议的实现过程,不追求复杂和完美
如果想要实现一个比较完善的rtsp服务器,可以参考我的开源项目-RtspServer
言归正传,下面开始本系列的文章
一、什么是RTSP协议?
RTSP是一个实时传输流协议,是一个应用层的协议
通常说的RTSP包括RTSP协议
、RTP协议
、RTCP协议
对于这些协议的作用简单的理解如下
RTSP协议:负责服务器与客户端之间的请求与响应
RTP协议:负责传输媒体数据
RTCP协议:在RTP传输过程中提供传输信息
rtsp承载与rtp和rtcp之上,rtsp并不会发送媒体数据,而是使用rtp协议传输
rtp并没有规定发送方式,可以选择udp发送或者tcp发送
二、RTSP协议详解
rtsp的交互过程就是客户端请求,服务器响应,下面看一看请求和响应的数据格式
2.1 RTSP数据格式
RTSP协议格式与HTTP协议格式类似
- RTSP客户端的请求格式
method url vesion\r\n
CSeq: x\r\n
xxx\r\n
...
\r\n
method:方法,表明这次请求的方法,rtsp定义了很多方法,稍后介绍
url:格式一般为rtsp://ip:port/session
,ip表主机ip,port表端口好,如果不写那么就是默认端口,rtsp的默认端口为554
,session表明请求哪一个会话
version:表示rtsp的版本,现在为RTSP/1.0
CSeq:序列号,每个RTSP请求和响应都对应一个序列号,序列号是递增的
- RTSP服务端的响应格式