网站百科源码,瑞安网站建设优化,域名注册信息可以在哪里找到,宠物店网站怎么做介绍 利用线程池#xff0c;实现 RTSP 服务器的高并发请求处理。 RTSP 是音视频的控制视频的协议#xff0c;如果您还不了解#xff0c;可以看看之前我解析 RTSP 协议的文章。音视频协议解析(RTP/RTCP/RTSP/RTMP)——RTSP解析-CSDN博客 解析 我们先来看 RTP 的实现。RTP 是音… 介绍 利用线程池实现 RTSP 服务器的高并发请求处理。 RTSP 是音视频的控制视频的协议如果您还不了解可以看看之前我解析 RTSP 协议的文章。音视频协议解析(RTP/RTCP/RTSP/RTMP)——RTSP解析-CSDN博客 解析 我们先来看 RTP 的实现。RTP 是音视频协议中负责传输数据的协议。
#includestdint.h#define RTP_VERSION 2
#define RTP_PAYLOAD_TYPE_H264 96
#define RTP_PAYLOAD_TYPE_AAC 97
#define RTP_HEADER_SIZE 12
#define RTP_MAX_PKT_SIZE 1400class RtpHeader{
public:uint8_t csrcLen; // 4 bitsuint8_t extension; // 1 bituint8_t padding; // 1 bituint8_t version; // 2 bituint8_t payloadType; // 7 bits uint8_t marker; // 1 bituint16_t seq; uint32_t timestamp;uint32_t ssrc;
};class RtpPacket{
public:RtpHeader rtpHeader;uint8_t payload[0];
};void rtpHeaderInit(RtpPacket* rtpPacket, uint8_t csrcLen, uint8_t extension,uint8_t padding, uint8_t version, uint8_t payloadType, uint8_t marker,uint16_t seq, uint32_t timestamp, uint32_t ssrc);int rtspSendPacketOverTcp(int clientSockfd, RtpPacket* rtpPacket, uint32_t dataSize, char channel);int rtspSendPacketOverUdp(int serverRtpSockfd, const char* ip, int16_t port, RtpPacket* rtpPacket, uint32_t dataSize);
RtpHeaderRTP 数据包的头部 csrclen提供信源长度 extension扩展标志占 1 bits如果X1则在RTP报头后跟有一个扩展报头 padding填充标志占1位如果P1则在该报文的尾部填充一个或多个额外的八位组 它们不是有效载荷的一部分 version版本号占 2 bits payloadType载荷类型 marker标志占 1 bits不同的有效载荷有不同的含义对于视频标记一帧的结束对于 音频标记会话的开始。 seq占 16bits用于标识发送者所发送的RTP报文的序列号 timestamp时间戳占 32 bits反映了该RTP报文的第一个八位组的采样时刻 ssrc同步信源
RtpPacketRTP 数据包 rtpheader数据包头部 payload载荷
好了RTP 的包头部和包packet我们解析了。剩下的函数我们下一回再解析。
欲知后事如何请听下回分解。