rtmp 时间戳与音视频同步
2017-10-02 13:36
1161 查看
一 rtmp协议中的时间戳字段。
chunk type:0 时间戳为绝对时间
chunk type:1 时间戳为相对时间
音视频的时间戳是分开统计的。
参见nginx-rtmp源码
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/25/648f212b98f898171ae5bc047933d993)
音视频的上下文是分开的,rtmp协议都是从绝对时间开始,相对时间结束。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/25/8adb0709b0d023c094573537d18bedd8)
处理完一个音频/视频数据包后,时间戳增加相对时间戳值
二 rtmp音视频数据的播放与同步
rtmp播放器是严格按照时间戳进行播放音视频数据的,虽然rtmp音视频数据的时间戳是分开统计的,但是音视频的时间戳的差值应该是恒定值。
每播放完一帧音频/视频帧,播放器休眠delta时间戳时长。
三 rtmp音视频不同步问题排查
1 在播放端抓包,查看音视频的时间戳差值是否恒定。
2 服务端加日志,输出音视频的时间戳信息
3 抓推送端的数据包,查看音视频时间戳差值是否恒定
注意:音视频不同步问题,一般出在推送端,遇到的大多数case是推送端在应用层拿到音频数据之后,进行了音频转码,导致的音频转发总是滞后。
四 后续再讲一些类似aac语音解码播放,或者转码为其它格式,敬请期待。
chunk type:0 时间戳为绝对时间
chunk type:1 时间戳为相对时间
音视频的时间戳是分开统计的。
参见nginx-rtmp源码
音视频的上下文是分开的,rtmp协议都是从绝对时间开始,相对时间结束。
处理完一个音频/视频数据包后,时间戳增加相对时间戳值
二 rtmp音视频数据的播放与同步
rtmp播放器是严格按照时间戳进行播放音视频数据的,虽然rtmp音视频数据的时间戳是分开统计的,但是音视频的时间戳的差值应该是恒定值。
每播放完一帧音频/视频帧,播放器休眠delta时间戳时长。
三 rtmp音视频不同步问题排查
1 在播放端抓包,查看音视频的时间戳差值是否恒定。
2 服务端加日志,输出音视频的时间戳信息
3 抓推送端的数据包,查看音视频时间戳差值是否恒定
注意:音视频不同步问题,一般出在推送端,遇到的大多数case是推送端在应用层拿到音频数据之后,进行了音频转码,导致的音频转发总是滞后。
四 后续再讲一些类似aac语音解码播放,或者转码为其它格式,敬请期待。
相关文章推荐
- Live555用做RTSPClient时,利用RTP时间戳进行音视频同步的解决方案(必须有RTCP支持才可行)
- 老调重弹之ffmpeg视频时间同步
- 音视频同步原理及打时间戳
- 音视频同步-时间戳
- 1小时学会:最简单的iOS直播推流(九)flv 编码与音视频时间戳同步
- FFMPEG 播放时间计算 AVRational 音视频同步问题分析
- 第11课完成:“主主同步”的视频,浪费的时间太不值得
- 音视频同步-时间戳
- 理解音视频同步-时间戳
- 视频、音频打时间戳的方法及其音视频同步(播放)原理
- 理解音视频同步-时间戳
- 音视频同步之时间戳
- 视频、音频打时间戳的方法及其音视频同步(播放)原理
- 音视频重新编码时间戳同步问题
- 音视频同步系列文章之------基于时间戳的同步点
- 音视频同步系列文章之------时间戳与时间尺度(time scale)
- 音视频同步-时间戳
- 音视频同步-时间戳
- 音视频同步-时间戳
- 音视频同步系列文章之------基于时间戳的同步点