概述
RTSP(Real-Time Streaming Protocol)实时流式协议
需要注意的是,RTSP本身不传输数据,音视频流数据是通过RTP传输的。
C/S请求应答整体流程:
客户端->>服务器: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协议头数据犹如结构体:
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协议 RTP协议所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复