音视频项目——RTSP服务器解析(1)

介绍

利用线程池,实现 RTSP 服务器的高并发请求处理。 RTSP 是音视频的控制视频的协议,如果您还不了解,可以看看之前我解析 RTSP 协议的文章。音视频协议解析(RTP/RTCP/RTSP/RTMP)------RTSP解析-CSDN博客

解析

我们先来看 RTP 的实现。RTP 是音视频协议中负责传输数据的协议。

cpp 复制代码
#include<stdint.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        1400

class RtpHeader{
public:
    uint8_t csrcLen;    // 4 bits
    uint8_t extension;  // 1 bit
    uint8_t padding;    // 1 bit
    uint8_t version;    // 2 bit
    uint8_t payloadType; // 7 bits 
    uint8_t marker;     // 1 bit
    uint16_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);
RtpHeader:RTP 数据包的头部

csrclen:提供信源长度

extension:扩展标志,占 1 bits,如果X=1,则在RTP报头后跟有一个扩展报头

padding:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组, 它们不是有效载荷的一部分

version:版本号,占 2 bits

payloadType:载荷类型

marker:标志,占 1 bits,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于

音频,标记会话的开始。

seq:占 16bits,用于标识发送者所发送的RTP报文的序列号

timestamp:时间戳,占 32 bits,反映了该RTP报文的第一个八位组的采样时刻

ssrc:同步信源

RtpPacket:RTP 数据包

rtpheader:数据包头部

payload:载荷

好了,RTP 的包头部和包(packet),我们解析了。剩下的函数,我们下一回再解析。

欲知后事如何,请听下回分解。

相关推荐
DogDaoDao6 分钟前
FFmpeg 9.0 “Lei“ 正式发布:十年之后,以你之名
ffmpeg·音视频·实时音视频·视频编解码·ffprobe·ffmpeg 9.0
开开心心_Every16 分钟前
电脑文件搜索软件支持内容和拼音搜索
linux·服务器·人工智能·r语言·pdf·音视频·symfony
weixin_495248401 小时前
带硬字幕的老视频也能出海:短剧出海翻译服务商如何擦除重制?
人工智能·音视频
硅谷秋水12 小时前
EgoSteer:一种基于第一人称视角视频、实现可控灵巧操作的全栈系统
深度学习·机器学习·语言模型·机器人·音视频
波罗丁牌16 小时前
uni-app 实现视频聊天、屏幕分享,支持Android、HarmonyOS、iOS
android·uni-app·音视频
不爱记笔记19 小时前
视频转PPT工具测评:通义听悟、Ai好记、讯飞听见谁更懂画面信息?
人工智能·powerpoint·音视频
2601_9616813021 小时前
河南AI短视频哪个好
音视频
WA内核拾荒者21 小时前
WhatsApp 富媒体消息(图片/视频)的发送优化与压缩策略
php·音视频·媒体
1 天前
使用ffmpeg将mp4视频转为m3u8格式
android·ffmpeg·音视频
音视频牛哥1 天前
WebRTC 能解决低延迟直播吗?为什么 RTSP、RTMP、GB28181 仍然不可替代?
音视频·webrtc·低延迟rtsp播放器·音视频sdk·smartmediakit·低延迟rtmp播放器·低延迟音视频