苏州网站开发建设电话,网站集群建设中标,代理网页打不开,android系统app开发音视频同步 - 以音频时间为基 上图介绍#xff1a;
该图是以音频的时间为基#xff0c;对视频播放时间的延迟控制方案#xff0c;只调整视频的播放延时。delayTime是视频播放的延迟时间#xff0c;初始值是1 / FPS * 1000 (ms)#xff0c;如果FPS为25帧率#xff0c;初始…音视频同步 - 以音频时间为基 上图介绍
该图是以音频的时间为基对视频播放时间的延迟控制方案只调整视频的播放延时。delayTime是视频播放的延迟时间初始值是1 / FPS * 1000 (ms)如果FPS为25帧率初始值即为40ms。为理解同步过程明确一点delayTime是会不断调整的并不是一直40ms。以上的time_base结构体是AVStream::time_base。Step2中展示的是diff音视频播放时差处于不同范围时对应不同的视频播放延迟时间(delayTime)。 流程
Step1判断 音频帧 or 视频帧 快 ? 时间差(diff) 音频播放时间 - 视频播放时间; Step2当diff 0 ms 时说明音频帧比视频帧快 音频帧比视频帧快视频帧应该追赶音频帧所以应该减少视频帧的延迟时间。 diff音视频播放时差处于不同范围的处理情况
音视频播放时差范围3ms - 500ms500ms - 10000ms 10000ms
13ms - 500ms
视频帧慢了3ms - 500ms将上一次delayTime乘以2/3达到减少视频延迟时间的效果。
delayTime delayTime * 2 / 3当diff处于3 - 500 ms这个范围视频延迟时间(delayTime)要求不能低于默认延迟时间defaultDelayTime25帧则为40ms的一半也不能大于默认延迟时间的两倍。
如果delayTime小于默认延迟时间的一半将delayTime调整为默认延迟时间(defaultDelayTime)的2/3。如果delayTime大于默认延迟时间两倍将delayTime调整为默认延迟时间(defaultDelayTime)的两倍。
2500ms - 10000ms:
视频帧慢了500ms - 10000ms将delayTime设置为0。
3diff 10000ms
视频帧和音频帧差距很大了无法通过追赶达到同步应该将视频缓存队列清空直接引入最新鲜的视频帧。 Step2当diff 0 ms 时说明音频帧比视频帧快
音频帧比视频帧慢视频帧应该等一下音频帧所以应该增加视频帧的延迟时间。
diff音视频播放时差处于不同范围的情况
13ms - 500ms
视频帧快了3ms - 500ms将上一次delayTime乘以3/2达到增加视频延迟时间的效果。
delayTime delayTime * 3 / 2当diff处于3 - 500 ms这个范围视频延迟时间(delayTime)要求不能低于默认延迟时间defaultDelayTime25帧则为40ms的一半也不能大于默认延迟时间的两倍。
如果delayTime小于默认延迟时间的一半将delayTime调整为默认延迟时间(defaultDelayTime)的2/3。如果delayTime大于默认延迟时间两倍将delayTime调整为默认延迟时间(defaultDelayTime)的两倍。
2500ms - 10000ms:
视频帧快了500ms - 10000ms将delayTime以两倍 defaultDelayValue时间进行延时。
3diff 10000ms
视频帧和音频帧差距很大了无法通过追赶达到同步应该将音频缓存队列清空直接引入最新鲜的音频帧。