Communitygithub.com

lhg-plugs/lhg-motion-video

动效导出与质检方法论:ffmpeg 导出参数、平台规格、成片自查流程。点"导出"之前先用它过一遍。

Was ist lhg-motion-video?

lhg-motion-video is a Claude Code agent skill that 动效导出与质检方法论:ffmpeg 导出参数、平台规格、成片自查流程。点"导出"之前先用它过一遍。.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lhg-plugs/lhg-motion-video/tree/HEAD/skills/lhg-mv-deliver

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

lhg-mv-deliver:导出与质检

目标:导出的每一字节都经得起播放器和平台的毒打。 核心纪律:先跑脚本(机器),再做评审(人);blocker 不清零,不许说可发布。

1. 何时使用

  • 导出成片:按第 3.1–3.2 节
  • 适配多平台:看第 3.3 节规格表
  • 发布前:跑第 5 节自查全流程

2. 输入 / 输出

输入:渲染帧序列 + 混音后音频 + film.json。

输出:out/final.mp4 + captions.srt(如有)+ 自查报告。

3. 分步方法论

3.1 导出命令(记住这串参数)

ffmpeg -framerate 30 -i frames/%04d.png -i audio.wav \
  -c:v libx264 -pix_fmt yuv420p -crf 18 \
  -vf scale=1920:1080 -c:a aac \
  -movflags +faststart -shortest out/final.mp4

每个参数为什么在:

参数作用缺了会怎样
-pix_fmt yuv420p像素格式兼容QuickTime 偏色/黑屏(blocker)
-crf 18画质(16–23 合理)太大糊、太小文件巨大
-movflags +faststartmoov 前置网页播要等下完才开始
-c:a aac音频编码部分播放器静音
-shortest音画同收结尾多一截黑屏
-vf scale=分辨率锁定和 film.json 对不上被拉伸

3.2 导出前检查单

  • film.json 四要素与渲染/导出三处一致(宽高/帧率/时长)
  • 素材全本地化,无外链
  • 音频已混音,响度 -14 LUFS
  • 字幕 srt 无重叠、无超长行,安全区已声明
  • probe/ 静帧与成片抽帧一致(没偷换)

3.3 多平台规格速查

平台画幅时长建议备注
B 站/视频号横屏1920x1080≤3 分钟完播率生命线
抖音/小红书竖屏1080x192015–60 秒前 3 秒定生死
朋友圈/信息流1080x1080≤60 秒静音播放多,字幕必备

一源多发:横屏母版优先,竖屏版重排分镜(不是简单裁剪——裁剪会切掉字幕和主体)。

3.4 封面帧

  • 在 film.json 或 brief 里指定封面时间点(通常是高潮记忆点帧)。
  • 封面帧单独导出一张高清图,平台缩略图用它,不许用随机帧。

4. 反模式

  • ❌ 导出参数凭记忆手打——背下 3.1 那串,或存成脚本
  • ❌ 缺 yuv420p"先发了再说"——部分用户黑屏,口碑崩了补不回来
  • ❌ 竖屏版直接裁横屏——字幕和主体一起被切,等于重做
  • ❌ 从没在手机上播过成片——偏色/卡顿自己都不知道
  • ❌ 画面数据是编的——示意数据必须标示意,用假数据冒充真实是红线

5. 自查流程(发布前必跑)

第一步:跑确定性审计脚本(必做,零 LLM 成本)

python3 <插件目录>/scripts/audit/motion_audit.py --target <影片目录>
  • 28 条规则:manifest 4、渲染 7、字幕 5、导出 6、素材 4、brief 2。
  • 有 blocker 时脚本以非零 exit code 退出——这是设计,不是 bug。
  • --fail-on 控制 exit code 语义:默认 blocker;想要更严可设为 warning。

第二步:分级

级别定义处理
blocker成片会翻车:尺寸/帧率不一致、缺 yuv420p、字幕重叠、素材缺失必须修,不修不许发布(commit 前 hook 会拦截)
warning大概率是坑:无探针、无拍点、crf 越界、外链素材本次修掉;修不掉写理由进报告
nit洁癖项:缺 title、文件名不规范、缺 shortest顺手修

第三步:人工评审(脚本覆盖不到的)

  • 视觉:探针静帧与成片一致;转场抽看前后 5 帧,无闪帧
  • 听画:转场音效落在拍点 ±0.1s;音乐高潮对上视觉高潮
  • 诚实:画面数据/功能真实;示意数据已标注
  • 播放:手机+电脑实际播放一次,无偏色、无黑屏开头、无卡顿
  • 字幕:无平台 UI 遮挡(安全区内)

第四步:输出报告

# 自查报告:<片名>(日期)
## 结论:可发布 / 不可发布
## blocker(n):已修 n,剩余 n
## warning(n):已修 n,豁免 n(理由)
## nit(n)
## 人工评审:x/y 通过
## 需人工处理

6. 常见问题

Q:导出的 mp4 在 iPhone 上偏色? A:99% 是缺了 -pix_fmt yuv420p。补上重导,这是 QuickTime 的硬要求。

Q:文件太大传不上去? A:先把 crf 从 18 提到 21(画质损失肉眼难辨,体积降约 40%);再不行降帧率到 24fps。别降分辨率——糊了回不来。

Q:网页播要等很久才开始? A:缺 -movflags +faststart。moov box 沉底了,补上重导即可,不用重渲染。

7. 自检与反馈

每次执行完本 skill,做一次轻量自检:

  1. 脚本是否真的跑了?→ 没跑不算做。
  2. blocker 是否清零或全部列入"需人工处理"?
  3. 人工评审是否逐项打勾且有依据(含实际播放验证)?

标准冒烟用例:对插件自带的 fixtures/ 跑脚本,确认坏 fixture 的 blocker 全命中、好 fixture 零 blocker(见仓库根 smoke_test.py)。

反馈渠道:以 [QC] <一句话问题> 为标题提交到 https://github.com/lhg-plugs/lhg-motion-video/issues,正文写清"输入 → 错误输出 → 期望输出"。规则误报/漏报请附最小复现用例。

出品:刘洪光

本 skill 由真人出镜 IP「刘洪光」(安徽合肥)出品,归属 lhg-skills。

  • GitHub 主页:https://github.com/lhg-skills —— 全部 skill 开源在此,欢迎 star
  • 视频号:搜「刘洪光实名上网」
  • 微信:lhgsmsw

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills