色块布局网站首页模板,建筑培训课程有哪些,国外优秀网站案例,吉林智能网站建设制作RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系
RTSP#xff1a;负责媒体会话控制#xff08;DESCRIBE、SETUP、PLAY、PAUSE#xff09;#xff0c;通过SDP协商传输参数#xff08;端口、编码格式、封装模式#xff09;。RTP#xff1a;实际传输音视频数…RTSP场景下RTP协议详解及音视频打包全流程 一、RTSP与RTP的关系
RTSP负责媒体会话控制DESCRIBE、SETUP、PLAY、PAUSE通过SDP协商传输参数端口、编码格式、封装模式。RTP实际传输音视频数据基于UDP/TCP与RTCP配合实现同步和网络状态反馈。 二、RTP头字段详解RFC 3550
RTP头固定12字节字段含义及填写规则如下
字段名位宽取值说明Version (V)2 bits固定为20x80表示RTP版本。Padding §1 bit载荷末尾是否有填充字节如加密对齐。RTSP场景通常为0。Extension (X)1 bit是否启用头部扩展如RFC 5285定义。默认0启用时需在SDP中声明。CSRC Count (CC)4 bits贡献源CSRC数量。单路流通常为0。Marker (M)1 bit关键帧结束标记视频的最后一个分片包设为1音频包通常为0。Payload Type (PT)7 bits载荷类型SDP中动态映射如96H.264, 97H.265, 8PCMA, 14MPEG Audio。Sequence Number16 bits包序列号每发送一个RTP包自增1用于检测丢包和乱序。Timestamp32 bits时间戳基于编码时钟频率br- 视频90000 Hz每帧增量90000/fpsbr- 音频按采样率如AAC44100 Hz。SSRC32 bits同步源标识符随机生成同一流中唯一。
示例H.264视频包头时间戳增量300030fps
80 60 00 01 // V2, P0, X0, CC0, M0, PT96 (H.264)
00 01 // Sequence Number 1
00 00 0B B8 // Timestamp 3000
DE AD BE EF // SSRC0xDEADBEEF三、视频打包实现
1. H.264视频打包RFC 6184
NALU结构 ------------------------------|F|NRI| Type | Payload Data |------------------------------封装模式由SDP参数packetization-mode定义。 Mode 0单NALU 直接封装小NALU如SPS/PPS。 RTP头 | NALU头1B | 数据Mode 1FU-A分片 大NALU分片传输添加FU头和标记位。 RTP头 | FU Indicator1B | FU Header1B | 分片数据FU IndicatorF|NRI|Type280x7C。 FU HeaderS|E|R|TypeS/E标志分片起止Type为原始NALU类型。 Mode 2STAP-A组合 聚合多个小NALU。 RTP头 | STAP头1B | NALU1长度2B | NALU1数据 | NALU2长度2B | NALU2数据关键帧分片示例 // 第一个分片RTP头(M0) | 0x7C | 0x85S1, Type5 | 分片数据// 最后一个分片RTP头(M1) | 0x7C | 0x45E1, Type5 | 分片数据2. H.265视频打包RFC 7798
NALU头扩展2字节包含层次标识LayerID和时域层级TID。 ---------------------------------------------|F| Type6b | LayerID6b | TID3b |---------------------------------------------分片模式FU-A RTP头 | FU Indicator2B | FU Header1B | 分片数据FU IndicatorType490x62。 FU Header同H.264的S/E标志Type为原始NALU类型如32IDR。 示例 // 第一个分片RTP头 | 0x62 0x80LayerID0, TID1 | 0x80S1, Type32 | 分片数据3. SDP配置示例
mvideo 0 RTP/AVP 96
artpmap:96 H264/90000
afmtp:96 packetization-mode1; sprop-parameter-setsZ0LAH9kAUAW6EAAAAwAQAAADA8PFRQ,aM48gA四、音频打包实现
1. G.711PCMU/PCMA
静态PT0PCMU、8PCMA。封装直接填充裸数据时间戳按样本数递增。 RTP头PT0/8 | 音频样本每样本1字节2. AACRFC 3640
动态PT通过SDP协商如96。封装添加AU头声明数据长度。 RTP头 | AU头长度2b | AU头16b长度 | AAC数据3. OpusRFC 7587
封装直接填充Opus帧支持分片。 RTP头 | TOC字段配置参数 | Opus数据五、音视频同步机制
时间戳对齐 音频时间戳增量 采样数如AAC每帧1024样本 → 增量1024。视频时间戳增量 90000 / 帧率如30fps → 增量3000。 RTCP同步 发送端通过SR包传递NTP时间与RTP时间戳的映射。接收端计算播放时序偏差动态调整缓冲区。