RTSP(Real-Time Streaming Protocol)实时流式协议
需要注意的是,RTSP本身不传输数据,音视频流数据是通过RTP传输的。
C/S请求应答整体流程:
复制代码
1
2
3
4
5
6
7客户端->>服务器:DESCRIBE 服务器->>客户端: 200 OK (SDP) 客户端->>服务器:SETUP 服务器->>客户端: 200 OK 客户端->>服务器:PLAY 服务器->>客户端: (RTP包)
RTSP请求报文的结构如下图所示
RTSP响应报文的结构如下图所示
一次完整的会话抓包分析:
可以看到抓包序列从407到419为客户端与服务端信息交互的过程,从420开始则是服务端用RTP发送过来的音视频流数据。
RTP(Real-Time Transport Protocol)实时运输协议是IEFT的AVT工作组开发的协议,为实时应用提供端到端的运输服务,但不提供任何服务质量的保证,它有两种工作模式:TCP 和 UDP。
RTP协议构造很简单,它就是在音视频数据的头部加上RTP的数据头来区分识别音视频流数据,以确保客户端能正确解析数据而已。
RTP协议头数据犹如结构体:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31typedef struct RtpHdr_s { #if (BYTE_ORDER == LITTLE_ENDIAN) /* byte 0 */ u16 cc :4; /* CSRC count */ u16 x :1; /* header extension flag */ u16 p :1; /* padding flag */ u16 version :2; /* protocol version */ /* byte 1 */ u16 pt :7; /* payload type */ u16 marker :1; /* marker bit */ #elif (BYTE_ORDER == BIG_ENDIAN) /* byte 0 */ u16 version :2; /* protocol version */ u16 p :1; /* padding flag */ u16 x :1; /* header extension flag */ u16 cc :4; /* CSRC count */ /*byte 1*/ u16 marker :1; /* marker bit */ u16 pt :7; /* payload type */ #else #error YOU MUST DEFINE BYTE_ORDER == LITTLE_ENDIAN OR BIG_ENDIAN ! #endif /* bytes 2, 3 */ u16 seqno :16; /* sequence number */ /* bytes 4-7 */ int ts; /* timestamp in ms */ /* bytes 8-11 */ int ssrc; /* synchronization source */ }RtpHdr_t;
参考列表:
RTSP协议详解(转载)_黑面狐-CSDN博客_rtsp协议
RTSP协议实例分析_dosthing的博客-CSDN博客_rtsp协议
最后
以上就是失眠树叶最近收集整理的关于RTSP协议 RTP协议的全部内容,更多相关RTSP协议内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复