成片:2 分 21 秒 / 1344×768(2.39:1 加黑边)/ 24fps / 立体声 48kHz 制作日期:2026-09-20(生成 03:35→15:28,后期 15:30→16:00) 状态:✅ 全流程完成,成片可播 下载页:http://192.168.31.76:8899/46-武侠片头曲项目/
| 文件 | 说明 | 下载页 |
|---|---|---|
post/04_成片_2.39x1_混音.mp4 | 交付主片:裁 2.39:1 + 黑边 + 剧名淡入 + 完整混音 | 链接 |
post/04_母版_16x9_混音.mp4 | 16:9 母版(不裁幅、不叠字),便于二次剪辑 | 链接 |
post/03_final_239.mp4 | 2.39:1 含剧名,静音画面层 | — |
post/03_master_169.mp4 | 16:9 画面层 | — |
post/01_concat.mp4 · 02_grade.mp4 | 拼接版与调色版(中间产物,便于回退) | — |
music/v1-male.flac | 主音轨《霜刃引》男声独唱(48kHz) | 链接 |
music/v2-female.flac · v3-duet.flac | 女声独唱版 / 男女对唱版 | — |
shots/shot01–18.mp4 | 18 个镜头母版 | — |
qa/shot*_sheet.jpg | 每镜 6 帧联系表(质检用) | 目录 |
title/title_xiaobiaosong_1344x768.png | 剧名叠加层(带 alpha);title_kaiti_* 为备选 | — |
assets/ | 23 张素材(4 角色设定稿 + 9 场景板 + 7 道具 + 3 特写) | 目录 |
| 相册 | 18 镜已自动收录(ComfyUI 输出) | http://192.168.31.76:8900 → video/ |
| 项 | 实测 | 目标 | 结论 |
|---|---|---|---|
| 时长 | 141.21 s | 音乐 141.52 s | ✅ 收在尾奏余韵里 |
| 总帧数 | 3388 帧 | 17×192 + 124 = 3388 | ✅ 精确 |
| 分辨率 | 1344×768(2.39:1 内容 + 黑边) | — | ✅ |
| 帧率 | 24 fps | 24 | ✅ |
| 音轨 | AAC 立体声 48kHz,mean −15.2 dB / max −0.2 dB | 对齐原歌曲 −15.6/0.0 | ✅ |
| 剧名 | 135.2s 起 1.4s 淡入,持续到片尾 | — | ✅ 已抽帧确认 |
11 小时 53 分钟,18 镜全部成功,零失败、零硬挂。
| 项 | 值 |
|---|---|
| 时间窗 | 03:35:32 → 15:28:15 |
| 单镜耗时 | 34–43 分钟(192 帧 / 12 步 / 1344×768),含 5 分钟冷却合计 38–48 分钟/镜 |
| 最短 | shot18(124 帧)16.4 分钟 |
| 底座 | Minimax-h3_Singularity_ref2va_Pruned_v1.3_int8.safetensors |
| 节点 | 官方 MiniMaxH3ReferenceToVideo(comfy_extras)+ 独立 MotionContext 包;零加速节点 |
| 采样 | res_multistep + simple,12 步,单采 |
| 冷却 | 基础 300s + 等温度回落到 ≤62°C;实测出片后 60°C → 5 分钟内降到 44°C |
| 续接 | 仅镜10→镜11 用 AV latent(h3_ctx_duizhi) |
09-15 / 09-17 两次整机硬挂的教训全部生效:单镜独立任务、192 帧远离 90 分钟红线、强制冷却、断点续跑、失败即停。连续 11.9 小时满载没有再出现硬挂。
PNG 作为 ffmpeg 输入是单帧流,fade 的时间轴永远停在 t=0,alpha 恒为 0 —— 剧名实际不会出现。 修复:加 -loop 1 把字层变成连续视频流。已在 2.39:1 裁幅下抽帧确认落位。
若没在后期前验证,会是「跑完 12 小时才发现片名没上」。
-i video -i MUSIC 时 [0:a] 是画面自带的环境音、[1:a] 才是歌曲,我最初把 volume=0.20 加在了歌曲上。 实测成片 mean −30.9 dB(原歌曲 −15.6 dB),差 15 dB —— 相当于整片只有气氛没人声。 修复:歌曲 1.0 / 环境音 0.20,并关掉 amix 默认的 normalize=1(它还会把每个输入再减半)。 修复后 mean −15.2 dB / max −0.2 dB ✅
MotionContextTrim 会裁掉钉入的 22 帧前缀,所以续接段的交付帧数 = 采样帧数 − 22。镜11 因此只有 170 帧(应 192),会让后半段整体比音乐早 0.917 秒。 修复:把前一个镜头(镜10,静止的云海远景剪影)末帧克隆延长 22 帧吸收缺口。对画面几乎不可察觉,时间轴精确回到 3388 帧。
这条是方法论级的发现:以后凡是带 AV latent 续接的段,采样帧数要按「目标帧数 + 22」来给,否则整条时间轴会漂。
规格:17/18 精确达标(1344×768 / 192 帧 / 8.00s / 带音轨);镜11 为 170 帧(续接裁剪,已按 4.3 补帧)。镜18 为 124 帧。
画面抽检(联系表见 qa/):
| 镜 | 内容 | 抽检结论 |
|---|---|---|
| 01 | 雪原古战场大远景 | ✅ 构图与场景板一致,缓推到位,无文字无崩坏 |
| 05 | 药庐苏晚回眸 | ✅ 回眸过程完整、朱红披帛甩出有力、脸干净 |
| 08 | 裴无涯近景 | ✅ 银面具反光、皮指套叩栏、长街灯火 bokeh 全对,脸无畸变 |
| 11 | 刀剑相击 | ✅ 双人身份正确、有火星、与镜10 轴线延续 |
| 17 | 雪中擦肩 | ✅ 双人身份(黑衣狐裘 vs 月白朱红披帛)完全正确,远景无脸崩 |
未做 FaceRefine:中近景人脸(镜5/8/12)抽检均干净,未发现需要修复的崩坏,因此省下数小时 GPU 时间。
18 镜 → fixup(补帧对齐网格)→ concat(拼接)
→ grade(冷青/去饱和0.90/胶片曲线/暗角)
→ finish(裁 2.39:1 + 黑边 + 剧名 alpha 淡入)
→ mix(《霜刃引》0dB + H3 环境音 −14dB,压缩+限幅)
cd ~/Downloads/h3-tasks/sd-yin
~/Downloads/vlm-env/bin/python post_produce.py --stage all
⚠️ 必须用 ~/Downloads/vlm-env/bin/python(系统 python3 无 requests)。
| 脚本 | 作用 |
|---|---|
h3_shot.py | 逐镜执行器(官方节点图 + 温度冷却 + 断点续跑 + 内存哨兵) |
shots_a.json / shots_b.json | 18 镜清单:完整六段式提示词、参考图、seed、latent 配置 |
rescue_current.py | 接住 GPU 上正在跑的任务(重启执行器时不浪费在途算力) |
post_produce.py | 后期总装(fixup/concat/grade/finish/mix) |
make_title.py | 剧名排版器(小标宋/楷体两版) |
inspect_shots.py | 镜头质检(规格 + 联系表) |
music_to_grid.py | 歌曲 → 镜头网格换算 |
abc_sections.py | ABC 乐谱段落解析 |
yue2_three_versions.py | 三版本歌曲生成 |
h3_run.log / batch_detached.log | 运行日志 |
用户审片指出两处「有点搞笑」的动作。诊断结论:都是提示词歧义,不是模型能力问题。
原提示词同一段里写了「门向内开 + 他背对镜头走出去」,又写了「摄影机在他身后跟随」。 摄影机在他身后 = 门在摄影机背后,这个动作根本无法入画;模型只能自己发明一个能同时满足「背对镜头」与「有扇门」的动作,于是变成背着手开门。
改法:把「开门」与「走人」拆成两个互不干扰的节拍,并禁止任何手部碰门。
no hand touches the door / never walks backwards / never turns his head。要点:模型不需要做精细物体交互——只让它同时渲染「一扇自己转开的门」和「一个人往外走」。
原提示词写 taps the stone three times, evenly spaced。「均匀间隔的三次」被执行成了均匀快速的连续敲击,看着像打拍子,反而消解了「老谋深算」。
改法:全程只敲一次,且用静止来演城府。
one tap only / no second tap / no repeated tapping / no drumming of the fingers。| 项 | 值 |
|---|---|
| 重跑镜头 | 镜7(seed 20260962→20260963)、镜8(20260969→20260971) |
| 耗时 | 镜7 约 34 分钟 + 冷却,镜8 33.9 分钟 + 冷却,共约 73 分钟 |
| 是否影响他镜 | 否——两镜都不在 AV latent 续接链上(只有镜10→镜11 用 latent) |
| 后期重建 | post_produce.py --stage all --force,19.2 分钟 |
| 修复后复核 | 镜7 抽帧 49/52/55s:门敞开→走出→背身走远 ✅;镜8 抽帧 59/61/63s:手仅 59s 一次起落、其后完全静止 ✅ |
| 响度复核 | mean −15.2 dB / max 0.0 dB(与原曲一致) |
| 旧版备份 | shots/_v1_backup/shot07_v1_背身开门.mp4、shot08_v1_快速连击.mp4 |
⚠️ 坑:备份文件若放在
shots/目录下,会被执行器的shot*.mp4通配匹配到,导致后期报「镜头数不对:20/18」。备份必须放子目录。
用户要求把镜8 从「立于垛口」改成「坐在太师椅上」。这个方向是对的:坐着的反派比站着的更有压迫感,也更贴「老谋深算」。
前置问题:原有 9 块场景板里没有太师椅。让 H3 凭空画椅子风险高,所以先补一块场景板。
| 步骤 | 做法 | 结果 |
|---|---|---|
| 补场景板 | 即梦 5.0 + 2k 生成两张(椅子背对镜头 / 椅子侧对镜头) | 0 积分(1110→1110 实测) |
| 选型 | 用侧对镜头那张(sc_throne_chair_facing.png) | 背对镜头那张只能拍后脑勺,而本镜核心是「抬眸 + 面具反光」的正面戏 |
| 重跑镜8 | seed 20260971→20260975,参考图换成新场景板 + 裴无涯三视图 | 33.5 分钟,192 帧 / 8.00s ✅ |
| 后期重建 | post_produce.py --stage all --force | 18.6 分钟 |
提示词关键改动
He remains seated in the chair for the entire shot, never stands, never rises and never leans forward(防止模型把人立起来);wooden armrest),音色由清脆转沉闷,气质更「权」;新场景板:assets/sc_throne_chair_facing.png(交付用)、sc_throne_chair_back.png(备选:椅子朝向远处灯火,适合拍「俯瞰江山」的背影镜头,本次未使用)。 提示词存于 ~/Downloads/h3-tasks/sd-yin/prompts/sc_throne_chair2.txt。
复核:成片 57/59/61/63s 抽帧确认——端坐太师椅、四分之三侧对镜头、银面具接月光、手搭卷云扶手,仅 59s 一次起落;响度 mean −15.2 dB / max 0.0 dB ✅ 旧版备份:shots/_v1_backup/shot08_v2_站立叩栏.mp4。
用户定调:回到站姿,不用敲击动作,改用「明暗交替的脸」来演城府。
这个方向比"叩击"高级:光在变、人不变——动作层面的完全静止 + 光照层面的持续变化,才是"看不透"的视听表达。叩击是"人在动",而静止是"人在忍",后者更冷。
提示词设计
00:00.5 暗 → 00:02.0 满打 → 00:04.0 暗 → 00:05.5 满打 → 00:07.0 微暗;no impact sounds and no tapping)。数据
| 项 | 值 |
|---|---|
| 重跑镜8 | seed 20260975→20260981,参考图换回 sc_city_tower.png + 裴无涯三视图 |
| 耗时 | 33.4 分钟 + 冷却 |
| 后期重建 | 18.5 分钟 |
| 复核 | 抽帧 0.5/2.0/3.5/5.0/6.5/7.75s:暗→亮→暗→亮→微暗,六帧头位与视线完全一致 ✅;成片 57/59/61/63s 同样成立 ✅ |
| 响度 | mean −15.2 dB / max 0.0 dB ✅ |
| 备份 | shots/_v1_backup/shot08_v3_坐太师椅.mp4 |
三条弯路的价值:v1 快速连击 → v2 站立单次叩击 → v3 坐太师椅 → v4 站姿 + 明暗交替(定稿)。 结论:用"光照变化"代替"动作"来演内心,既绕开了模型做精细手势的短板,又比任何动作都更克制。
新增经验:当需要「不动声色地表现压迫感」时,不要写动作,改写成光照事件(流云掠月 / 灯焰摇曳 / 帘影扫过),并明写 does not move his body at all + 具体时间点的光照变化。模型对光照变化的渲染能力远强于对手部动作的控制能力。
<Picture 1> 当首帧是控制构图最有效的手段(13 小时那次与本次都验证)。-loop 1(见 4.1)。[0:a] 是画面自带音、[1:a] 是外挂音轨,别写反;amix 记得 normalize=0(见 4.2)。setsid),并另起一个轻量等待任务挂在会话上以获取完成通知。three times / evenly spaced 这类会被执行成快速连击。要「克制的一次」就明写 one tap only + no second tap + no drumming,并给出具体时间点(如 At 00:05.500)。用静止演情绪比用重复动作更可靠。