文章目录RTMP 时间戳 核心知识全解一、时间戳基础1. 时间戳的作用2. 时间戳单位二、Chunk 中的时间戳编码3. 时间戳的存储方式4. 四种 fmt 下的时间戳表示三、DTS、PTS 与 CTS5. 三个时间概念的区别6. RTMP 中的时间戳对应关系7. CTS 在 RTMP 视频 Tag 中的位置8. 为什么需要 CTS?四、音视频同步原理9. RTMP 音视频同步的实现方式10. 同步策略(播放端实现)11. 音视频不同步的常见原因五、时间戳回绕(Rollover)12. 什么是时间戳回绕?13. 如何处理时间戳回绕?六、时间戳增量(Delta)机制14. 时间戳增量的计算15. 接收端如何还原绝对时间戳?七、常见时间戳问题与坑点16. 时间戳为什么会有跳变?17. 如何判断流是否异常(从时间戳角度)?18. RTMP 时间戳和 RTP 时间戳的区别八、面试高频问答Q1: RTMP 的时间戳是 DTS 还是 PTS?Q2: 为什么 RTMP 时间戳只有 3 字节?够用吗?Q3: fmt=3 的 Chunk 没有时间戳字段,时间戳怎么确定?Q4: 音视频同步是怎么实现的?以什么为基准?Q5: 长时间直播后时间戳溢出了怎么办?RTMP 时间戳 核心知识全解一、时间戳基础1. 时间戳的作用音视频同步:音频和视频按照时间戳对齐播放播放速率控制:按照时间戳的间隔决定播放速度缓冲区管理:根据时间戳判断缓冲进度、计算延迟流同步:多路流(如多路音频、字幕)之间的时间对齐2. 时间戳单位RTMP 时间戳单位是毫秒(ms)存储在 Chunk Message Header 中,占3 个字节最大值:0xFFFFFF=16777215 毫秒≈4.66 小时超过最大值后会发生回绕(Rollover/Wraparound)二、Chunk 中的时间戳编码3. 时间戳的存储方式Chunk Message Header 中的时间戳有两种存储形式:(1