Communitygithub.com

ffmpeg视频质量检测门控

利用ffmpeg对渲染视频进行自动化质量检测(卡顿、静音、响度、字幕等),替代人工肉眼审查,适用于AI/自动化视频生产流水线。

ffmpeg视频质量检测门控 是什么?

该技能通过一系列可配置的ffmpeg脚本,对渲染后的视频进行客观质量测量,而非依赖人工审查。它支持短视频、长视频和社交媒体剪辑,能够检测最长静止/卡顿片段(通过10fps降采样副本过滤背景噪点)、死寂(-50dB阈值,持续>=0.3秒)、综合响度(默认-14 LUFS±1.5)和真实峰值(<=-1 dBFS),以及时长、尺寸、音频存在性等基础指标。此外,它还提供开场视觉密度测量(评估前几秒内“平坦”8x8网格单元的比例,排除闪光/黑帧)和字幕格式/阅读速度检查(逐行字符数、显示时间、字符/秒速率和重叠检测)。所有脚本均返回明确的退出码:0表示通过,1表示失败,3表示无法测量(例如缺失ffmpeg或文件不可读),确保在CI/CD流水线中可集成。该技能适用于Cursor、Claude Code、Codex等AI编码助手,并建议与其他门控(如文本理解审查、源文本改编保真度检查)配合使用,以覆盖人工审美等不可量化因素。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add Kein-chronicle/ffmpeg-video-qa-gates

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

video-qa-gates

用测量数据做判断。看一眼视频然后说“看起来还行”正是导致4秒卡顿上线的做法。

脚本测量项失败条件
scripts/qa_video.py音频流存在;尺寸;时长(±容差或最大);最长近静止片段(基于10fps的副本,使缓慢的背景漂移不会掩盖停滞);死寂(-50 dB,>=0.3 秒);综合响度(默认 -14 LUFS ±1.5);真实峰值(<= -1 dBFS)任何超出限制
scripts/opening_density.py前几秒内“平坦”8x8网格单元的比例(亮度标准差 < 5),中位数和最大值开场大部分为空背景;可用帧数少于 N(=无法测量)
scripts/subtitle_lint.py每提示行数,每行字符数,最小显示时间,字符/秒,重叠任何违规;解析到零条提示=无法测量
python3 scripts/qa_video.py out.mp4 --expect-size 1080x1920 --max-duration 30
python3 scripts/opening_density.py out.mp4 --seconds 3
python3 scripts/subtitle_lint.py out.vtt --max-chars 20
bash tests/run.sh          # 用ffmpeg构建合成片段,并验证每个缺陷都被正确捕获

设计说明(为什么这样构建)

  • 退出码 3 表示“无法测量”。 缺失ffmpeg、文件不可读或可用帧数少于N,绝不能显示为通过。
  • 使用10fps降采样副本来测量卡顿。 旋转的光线或背景中的辉光会使静止场景在全精度下看起来“有生命”;降采样副本会过滤掉这些噪声。限制是 --max-freeze(默认4秒);一直持续到片段末尾的卡顿也会计入。
  • 闪屏/黑帧在密度测量中被跳过(平均亮度 <8 或 >247):它们无法说明场景内容。
  • 根据你自己的好例子和坏例子校准阈值,并记录下来。 测量几个你认为好的开场和几个你认为平淡的开场,在它们之间设定限制。默认值是起点;你的数字会不同。
  • 测试输入可能出错,但门控本身没错。 testsrc2 模式是大色块,会被测量为“空”;噪声视频是诚实的对照。当门控与其测试输入不一致时,找出哪一方错了。
  • 这些是 “感觉像真正的短视频”的代理指标。通过测试并不能保证视频有趣或吸引人;人的抱怨(“看起来像幻灯片”,“字幕重复屏幕上的文字”)应该成为新的可量化门控。

搭配使用

值得添加的额外门控(此处未实现)

屏幕审计(每个屏幕文字框:重叠、平台UI安全区、字幕带入侵);屏幕字符串白名单(防伪造);文本大小下限(占帧宽度的百分比);剪辑节奏(平均/最长剪辑长度);通过STT的音视频字数错误率(<= 0.08);渲染DOM中的表情符号禁止;字幕/屏幕文字重复率。这些需要你的渲染器的DOM/时间线,因此无法通用。

运行时依赖:使用 python3 -m pip install -r requirements.txt 安装 requirements.txt。Pillow 必须至少为 12.3.0 版本;上面列出的可选模型依赖是独立的。

相关技能