Communitygithub.com

Kein-chronicle/ffmpeg-video-qa-gates

使用 ffmpeg 客觀檢測渲染影片(短影音、長片、社群短片)的品質問題,例如靜止畫面、空白音、響度與真實峰值、持續時間/大小/音訊存在性、字幕格式與閱讀速度,以及「開場畫面密度」指標。適用於 AI/自動化影片產出流程,或需要客觀發布門檻的情境。

ffmpeg-video-qa-gates 是什麼?

這是一個用於影片品質自動化檢測的 AI 技能,專為 AI 與自動化影片產出流程設計。它使用 ffmpeg 對渲染完成的影片(短影音、長片、社群短片)執行多項客觀測量,而非依賴人工目視檢查。主要檢測項目包括:最長近似靜止片段(防止影片停滯)、空白音與響度(-50 dB 以上且持續 0.3 秒)、整合響度(預設 -14 LUFS ±1.5)與真實峰值(≤ -1 dBFS)、影片尺寸與持續時間、字幕行數與字元限制及閱讀速度,以及一個獨特的「開場畫面密度」指標(測量前幾秒畫面中「平坦」區塊的比例)。若無法完成測量(例如缺少 ffmpeg 或不可讀檔案),一律回傳退出碼 3,避免錯誤通過。此技能支援 Claude Code、Cursor 等以命令列為基礎的 AI 代理平台,透過三個主要 Python 腳本(qa_video.py、opening_density.py、subtitle_lint.py)運作,並附有完整的測試套件(tests/run.sh)以確保正確性。

相容平台~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音訊串流存在;尺寸;持續時間(±容差或最大值);最長近似靜止片段(以 10 fps 降格複製,避免緩慢背景漂移掩蓋停滯);空白音(-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 格時,絕不能回傳綠色。
  • 以 10 fps 降格複製來測量靜止畫面。 旋轉光線或背景發光會讓靜止場景在全精度下看起來「有生命」;便宜的複製會去除那些雜訊。限制值為 --max-freeze(預設 4 秒);一直持續到片段結尾的靜止畫面也會被計算。
  • 閃爍/全黑影格在密度測量中被跳過(平均亮度 <8 或 >247):它們無法反映場景內容。
  • 根據你自己的優良與不良範例來校準門檻,並記錄下來。 測量一些你認為不錯的開場和一些你認為平淡的開場,然後將限制值設定在兩者之間。預設值只是起點;你的數字會不同。
  • 可能是測試輸入錯了,而不是門檻錯了。 testsrc2 圖案是大色塊,會被測量為「空」;雜訊影片則是誠實的對照組。當門檻與其測試輸入不一致時,找出哪邊錯了。
  • 這些都是代理指標,用以反映「感覺像真正的短影音」。通過檢測並不保證影片有趣或吸引人;人類的抱怨(「看起來像投影片」、「字幕重複螢幕上的文字」)應該成為新的可測量門檻。

與以下工具搭配使用

值得加入的額外檢測項目(此處未實作)

畫面審核(每個螢幕文字框:重疊、平台 UI 安全區、字幕條侵入);螢幕文字字串允許清單(防止偽造);文字尺寸下限(以畫面寬度百分比表示);剪輯節奏(平均/最大剪輯長度);透過語音辨識計算字幕與語音的字元錯誤率(≤ 0.08);渲染 DOM 中禁止表情符號;字幕/螢幕文字重複比例。這些需要你的渲染器的 DOM/時間軸,因此無法通用化。

執行時期依賴:使用 python3 -m pip install -r requirements.txt 安裝 requirements.txt。Pillow 至少需為 12.3.0 版;上述選擇性模型依賴項則分開列出。

相關技能