| name | video-review |
| description | 审查多 clip 视频的连贯性问题(含妆造与音色穿帮),通过修改 prompt + 多模态参考素材并用 Seedance 重新生成来修复,而非 FFmpeg 后处理。 |
视频连贯性审查与修复
核心原则
穿帮修复 = 修改 prompt + 加上正确的 reference_image / reference_video / reference_audio + Seedance 重新生成,而不是 FFmpeg 滤镜/转场/调色。
FFmpeg 只用于三件事:
- 提取关键帧(人工/AI 比对用)
- 抽前段尾段(做下一段的
reference_video,由 changdu clip-extract-tail 包装)
- 拼接最终成片(
changdu clip-concat,保留音视频)
前置条件
- 已安装 changdu CLI 和 ffmpeg
- 视频目录中包含
视频_ClipXXX.mp4 和 视频_ClipXXX.prompt.txt
- 主角已有"角色三视图"图片素材(建议先用
asset-create --type Image 入库)
- 第 1 个 clip 完成后已用
changdu voice-asset-from-clip 提取并入库主角音色样本(可选但强烈推荐)
工作流
Step 1:提取关键帧(视觉比对)
对每个 clip 提取首帧、中帧、尾帧用于人工/AI 比对:
mkdir -p analysis
for clip in 视频_Clip*.mp4; do
stem="${clip%.mp4}"
ffmpeg -y -i "$clip" -vf "select=eq(n\,0)" -vframes 1 -q:v 1 "analysis/${stem}_first.jpg"
ffmpeg -y -sseof -1 -i "$clip" -update 1 -q:v 1 "analysis/${stem}_last.jpg"
total=$(ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of csv=p=0 "$clip")
mid=$((total / 2))
ffmpeg -y -i "$clip" -vf "select=eq(n\,$mid)" -vframes 1 -q:v 1 "analysis/${stem}_mid.jpg"
done
Step 2:逐对比较,识别穿帮
对相邻 clip 的衔接帧(Clip N 尾帧 vs Clip N+1 首帧)以及音轨进行检查,常见 9 类问题:
| 类别 | 检查内容 | 严重程度 |
|---|
| TRANSITION | 前一 clip 尾部提前展示下一 clip 内容(叙事泄漏) | 高 |
| CHARACTER | 角色外观不一致(发型、伤疤、面部特征变化) | 高 |
| MAKEUP | 妆容/眉形/口红色/盘发等细节漂移(即便整张脸"像"也算穿帮) | 高 |
| TWIN | 同一画面出现两个几乎一模一样的角色(双胞胎问题) | 高 |
| PROP | 道具变化(武器形状、数量、位置不一致)或道具与参考图不符 | 中 |
| SCENE | 场景布局不一致(柱子数量、墙壁颜色变化)或人物站位与场景空间不符 | 中 |
| VOICE | 角色音色变化(同一人物不同 clip 听感不同、性别错乱、口音切换) | 高 |
| BINDING | prompt 中角色/道具出现时缺少 @图片N 绑定,导致模型无法锚定参考图 | 高 |
| DETAIL | 其他细节(月亮形状、光照方向不一致) | 低 |
音色检查方式:
mkdir -p analysis_audio
for clip in 视频_Clip*.mp4; do
stem="${clip%.mp4}"
ffmpeg -y -ss 6 -i "$clip" -t 6 -vn -acodec libmp3lame -q:a 2 "analysis_audio/${stem}_voice.mp3"
done
Step 3:生成修复计划
每个穿帮点的修复方式:
| 修复方式 | 适用穿帮类别 | 操作 |
|---|
| REGEN | CHARACTER / MAKEUP / PROP / SCENE / DETAIL | 修改 prompt 强化对应锚定块 + clip-regen 重新生成 |
| REGEN-CHAIN | 同一处穿帮波及连续多个 clip | 修改 prompt 后用 clip-chain-regen 链式重生(默认 ref_video 衔接) |
| VOICE-FIX | VOICE 类穿帮 | 用第 1 个 clip 提取音色样本 + clip-regen --voice-asset <id> 重生该 clip;同时在 prompt 中补充音色特征描述词 |
| BINDING-FIX | BINDING 类穿帮 | 检查 prompt 中所有角色/道具是否都用了 @图片N 格式,补全遗漏的绑定 |
| TWIN-FIX | TWIN 类穿帮 | 在 prompt 末尾追加"视频全程不要在同一画面中复制相同人物,不要多人同脸";检查是否使用了三视图(禁止);确保每个角色有独立的面部特写参考图 |
| TRIM | 叙事泄漏(clip 尾部多余内容) | changdu clip-trim --trim-tail Xs 裁剪 |
不使用 FFmpeg 调色、xfade 转场等后处理。这些操作会破坏音频、引入新的不一致。
输出修复计划:
修复计划:
- Clip003: TRIM(尾部 2s 叙事泄漏)
- Clip004: REGEN-MAKEUP(眼影色变化 → 强化【妆造锁定】+ 加 ref_video 抽 Clip003 尾段 + 重生)
- Clip005: VOICE-FIX(女主音色变粗 → 加 --voice-asset asset-qingluo-voice 重生)
- Clip006: REGEN(主角缺失 → 修改 prompt 确保主角全程在场)
- Clip007-009: REGEN-CHAIN(连续 3 段服装色差 → clip-chain-regen --continuity-mode ref_video)
Step 4:提示词预检
修复前先检查所有 prompt 质量(含妆造/音色/视频参考三条新规则):
changdu prompt-optimize --dir ./ --check
Step 5:执行修复
5.1 重新生成(REGEN)— 穿帮修复的核心方式
先修改 视频_ClipXXX.prompt.txt,根据穿帮类型强化对应约束块:
- 角色穿帮(CHARACTER) → 在【角色锚定】中更精确描述当前状态
- 妆造穿帮(MAKEUP) → 把妆容/发型/五官精修拆出独立【妆造锁定】块,写明眉形/眼影/口红/盘发
- 道具穿帮(PROP) → 在【道具锁定】中明确形状/数量/位置
- 场景穿帮(SCENE) → 在【场景锁定】中增加更多固定细节
- 主角缺失 → 在分镜描述中每个时段都明确提及主角
然后用 Seedance 重新生成。CHARACTER / MAKEUP 类穿帮强烈推荐使用 --prev-clip 自动抽尾段做 reference_video,再叠加 ref_image 做"双锚定",效果远胜单首帧:
changdu clip-regen \
--clip 4 --prompt-dir ./ \
--asset <角色三视图ID> --asset <场景ID> \
--prev-clip ./视频_Clip003.mp4 \
--prev-tail-seconds 5 \
--voice-asset <音色样本ID> \
--prompt-header '图片1是男主三视图,图片2是场景。视频1 是 Clip003 尾段,请保持人物外观、妆造与位置连续。' \
--ratio 16:9 --duration 15
重新生成后,再次提取关键帧确认问题已修复。
5.2 链式重生(REGEN-CHAIN)
当连续多个 clip 都被同一处穿帮污染时,用 clip-chain-regen 一次性重生:
changdu clip-chain-regen \
--clips 7,8,9 --prompt-dir ./ \
--asset <角色三视图ID> --asset <场景ID> \
--regen-prev \
--continuity-mode ref_video \
--voice-asset <音色样本ID> \
--prompt-header '图片1是男主三视图,图片2是场景。' \
--ratio 16:9 --duration 15
5.3 音色修复(VOICE-FIX)
第 1 步——若还没有音色样本,从最早一段音色正确的 clip 提取并入库:
changdu voice-asset-from-clip \
--input ./视频_Clip001.mp4 \
--group-id <主角素材组ID> \
--start 6 --duration 8
第 2 步——给穿帮的 clip 重生时加 --voice-asset 或 --ref-audio:
changdu clip-regen \
--clip 5 --prompt-dir ./ \
--asset <角色三视图ID> --asset <场景ID> \
--voice-asset asset-xxxxx \
--prev-clip ./视频_Clip004.mp4 \
--prompt-header '图片1是女主三视图。视频1 是 Clip004 尾段,仅作妆造与位置参考。音轨1 锁定女主音色。' \
--ratio 16:9 --duration 15
同一集后续如果仍出现 VOICE 漂移,建议直接走链式:
changdu clip-chain-regen --clips 5,6,7 --prompt-dir ./ \
--asset <角色ID> --voice-asset asset-xxxxx \
--continuity-mode ref_video --ratio 16:9 --duration 15
5.4 裁剪叙事泄漏(TRIM)
changdu clip-trim \
--input 视频_Clip003.mp4 \
--output 视频_Clip003.mp4 \
--trim-tail 2.0
Step 6:重新拼接
用 clip-concat 拼接所有 clip(保留完整音视频):
changdu clip-concat \
--input-dir ./ \
--output 最终版.mp4
Step 7:二次审查
对修复后的视频重复 Step 1-2(含音轨抽取),确认问题已解决。最多迭代 2 轮。
修改 prompt 的要诀
- 角色锚定:在 prompt 开头明确当前外观状态(如"束冠短发,左颊有血痕,右手持单刀")
- @图片N 绑定:确保 prompt 中每次提及角色都用
角色名@图片N 格式,每次提及道具都用 道具名@图片N 格式,绝不能省略
- 妆造锁定:把眉形 / 眼影 / 口红 / 盘发 / 鬓角等细节单独成块,避免被其他描述淹没。角色有妆造变化时,确保使用对应妆造的参考图
- 道具锁定:明确列出每个角色手持/佩戴的道具及尺寸形状;有道具参考图时在 prompt 开头绑定(如「图片4为U盘道具参考」)
- 场景锁定:用固定短语描述场景,同一场景的 clip 使用完全相同的描述;有场景360度视频时通过
--ref-video 传入
- 范围限制:只描述当前 15 秒内的事,加"本段仅展示上述动作"
- 否定约束:对容易出错的细节加否定描述
- 反双胞胎:多角色同画面时加"视频全程不要在同一画面中复制相同人物,不要多人同脸"
- 主角在场:每个时段的分镜描述中都要提到主角的动作/位置
- 音色锚定:凡有台词必须显式声明
reference_audio: <voice_asset_id>,并在生成命令侧 --voice-asset 传入。prompt 中必须加音色特征描述(如"低厚温润中年男声的音色"),不只写"音频N的音色"
- 视频参考说明:传
--ref-video 时必须用一句自然语言说明每个参考视频的语义角色("视频1 是上一段尾部,仅作外观与位置参考,不要复刻其运镜")
- 参考图分工:每张图只承担一种职责(面部/全身/场景/道具),禁止混用
关联技能
storyboard-to-seedance-prompt(提示词规范,含妆造/音色/视频参考三块)
novel-to-video(整体工作流)
asset-management(音色样本与视频参考素材入库)
changdu CLI 命令:
clip-extract-tail:抽前段尾段做 reference_video
voice-extract / voice-asset-from-clip:抽音色 / 一键入库
clip-regen:用 Seedance 重新生成穿帮 clip(支持 --prev-clip、--voice-asset、--ref-video、--ref-audio)
clip-chain-regen:链式重生(默认 --continuity-mode ref_video)
clip-trim:裁剪叙事泄漏
clip-concat:拼接成片(保留音视频)
prompt-optimize:提示词质量检查(含妆造/音色/视频参考三条新规则)