我是靠谱客的博主 失眠树叶,这篇文章主要介绍RTSP协议 RTP协议,现在分享给大家,希望可以做个参考。

RTSP(Real-Time Streaming Protocol)实时流式协议

需要注意的是,RTSP本身不传输数据,音视频流数据是通过RTP传输的。

image

C/S请求应答整体流程:

复制代码
1
2
3
4
5
6
7
客户端->>服务器:DESCRIBE 服务器->>客户端: 200 OK (SDP) 客户端->>服务器:SETUP 服务器->>客户端: 200 OK 客户端->>服务器:PLAY 服务器->>客户端: (RTP包)

RTSP请求报文的结构如下图所示

image

RTSP响应报文的结构如下图所示

image

一次完整的会话抓包分析:

 

 

 

可以看到抓包序列从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
31
typedef 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协议内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部