【音视频】ffplay解析-音视频同步

音视频同步

主要解析:以音频为基准,让视频合成音频


思路

  • 视频慢了则丢掉部分视频帧(视觉->画⾯跳帧)

  • 视频快了则继续渲染上⼀帧


具体实现

复制代码
一个国际标准:音频帧-视频帧时间戳的差值在-100ms~25ms内流畅
1.差值=音频播放时间戳-视频播放时间戳----diff=pts_audio-pts_video(注意区分!!)
2.判断逻辑:
	(无法感知区间:min=-125ms,max=45ms)
	- max<diff:画后音前,视频落后了,丢帧不渲染(赶进度),直接下一帧
	- min<diff<max:正常渲染
	- diff<min:画前音后,视频超前了,持续显示当前帧,
			   视频播放线程先睡会_阻塞:sleep(diff-max)
			   然后继续渲染当前视频帧

ffplay具体源码

c 复制代码
 /* if video is slave, we try to correct big delays by
    duplicating or deleting a frame
    通过重复帧或者删除帧来纠正延迟*/
 diff = get_clock(&is->vidclk) - get_master_clock(is);

 /* skip or repeat frame. We take into account the
    delay to compute the threshold. I still don't know
    if it is the best guess */
 sync_threshold = FFMAX(AV_SYNC_THRESHOLD_MIN,
                        FFMIN(AV_SYNC_THRESHOLD_MAX, delay));
 if (!isnan(diff) && fabs(diff) < is->max_frame_duration) { // diff在最大帧duration内
     if (diff <= -sync_threshold) {      // 视频已经落后了
         delay = FFMAX(0, delay + diff); // 上一帧持续的时间往小的方向去调整
     }
     else if (diff >= sync_threshold && delay > AV_SYNC_FRAMEDUP_THRESHOLD) {
         // 视频超前
         delay = delay + diff; // 上一帧持续时间往大的方向去调整
         av_log(NULL, AV_LOG_INFO, "video: delay=%0.3f A-V=%f\n",
                delay, -diff);
     }
     else if (diff >= sync_threshold) {
         // 上一帧持续时间往大的方向去调整
         delay = 2 * delay; // 保持在 2 * AV_SYNC_FRAMEDUP_THRESHOLD内, 即是2*0.1 = 0.2秒内
     } else {
         // 音视频同步精度在 -sync_threshold ~ +sync_threshold
         // 其他条件就是 delay = delay; 维持原来的delay, 依靠frame_timer+duration和当前时间进行对比
     }
 }
相关推荐
视跃科技15 分钟前
国产化边缘音视频智能汇聚一体机:GB/T 28181 + GB 35114 双国标落地实践
音视频
AI服务老曹29 分钟前
AI视频分析私有化验收性能优化指南:从资源瓶颈排查到运维交接
人工智能·性能优化·音视频
殷忆枫1 小时前
BOA服务器下实现视频回放功能(CGI+软链接方案)
服务器·okhttp·音视频
小猴子爱上树1 小时前
跨境电商图片翻译工具,跨马批量处理视频字幕与抠图
python·音视频
硅谷秋水1 小时前
ImageWAM:世界-动作模型真的需要视频生成,还是只需要图像编辑?
人工智能·深度学习·计算机视觉·语言模型·机器人·音视频
青花锁2 小时前
Bright Data Video Search for VLA:2026年如何用视频大模型追踪物流分拣掉料问题
大模型·视觉检测·音视频·视频检测
OpenCutAI15 小时前
无字幕视频怎么翻译?跨境出海视频本地化实操指南
音视频
科技小E17 小时前
国标GB28181视频平台EasyGBS监控为什么会“瞎”:视频质量诊断EasyVQD如何揪出黑屏卡顿偏色
大数据·人工智能·音视频
ACP广源盛1392462567319 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
深圳市宝华视联21 小时前
院感约束下,手术室音视频布线与设备摆放实施注意事项
嵌入式硬件·音视频·实时音视频·视频编解码·嵌入式实时数据库