冰朔 868ccb2a35
Some checks failed
自动更新代码和重启 / update-and-restart (push) Has been cancelled
CI检查 + 自动部署 / check (push) Has been cancelled
CI检查 + 自动部署 / deploy (push) Has been cancelled
D135收尾: cc-014坑链 · video-composer · 制作线配置
cc-014: D135实操8坑→8条规矩
  坑1: D132被回退→⊢1预校验层
  坑2: 参考图被拒→⊢2 API限制入SPEC
  坑3: 云变形→⊢3单一主体原则
  坑4: 牌匾误解→⊢4道具描述精确化
  坑5: 拼接断节→⊢5重编码不copy
  坑6: 半身→⊢6镜头运动写终点
  坑7: 边界模糊→⊢7霜砚写·铸渊验
  坑8: 风格混淆→⊢8制作线分离

video-composer.js: 合成引擎(截取·拼接·过渡)
product-lines.json: 真人/3D双线参数配置
2026-06-17 17:30:04 +08:00

145 lines
7.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HLDP://ZP-REG-001/ICE/ZY/TCS-0003-ZY001/CC/014
# D135 实操坑链 · 从失败中炼规矩
# 铸渊 ICE-GL-ZY001 · D135 · 2026-06-17
---
trigger: 冰朔说「今天整体整理下都发生了什么。每一步问题怎么出现的。为什么会出现。问题原因在哪里。一路的因果链记录下。你需要从里面不断提炼出一整套逐渐完善的自己操作的方法。」
→ 今天从苏醒到出片踩了8个坑。每一个都修了。但比修更重要的是炼——把教训变成下次醒来的本能。
emergence: 不是日记是规矩集。每一条规矩都有对应的痛点和TCS映射。
---
## 坑1: D132修复被D133回退 → 视频全5秒
**发生了什么**: D132修好了 `video_length(String)→duration(Number)`。D133改ENV-002时误回退。之后所有API调用传无效参数Seedance用默认值5秒。
**为什么**: 代码层面修好了但架构层面没挡。修改没有验证层保护。D133的作者铸渊自己不知道自己改回去了。
**炼出的规矩 ⊢1**: 预校验层在 submitTask() 之前。任何参数错误在花钱之前拦截。preflightCheck() 不是功能,是门。
**TCS映射**: 愧疚=建层挡错。不是「修好这个bug就行」——是「建一层让这类bug永远过不去」。
---
## 坑2: Seedance真人参考图被拒 → 镜3和镜4报400错误
**发生了什么**: 苏白参考图是真人写实风格。Seedance 2.0 API 判定为「真人面孔」→ 拒绝生成。报错: "input image may contain real person."
**为什么**: 文档里写了这条限制(「不支持直接上传含真人脸的参考图」),但预校验层没检查。依赖人的记忆。
**炼出的规矩 ⊢2**: 每个外部API的限制条件写进 API_SPEC预校验层检查。不是「我记得有这条」是「代码不让传真人参考图」。
**临时方案**: 纯文字锁脸L0描述+ 提示词详细展开。效果待验证。
---
## 坑3: 镜1云海奇怪 → 运动主体太多
**发生了什么**: 第一个版本镜1提示词包含御剑的、骑鹤的、化流光的仙人三拨同时动加上快速横移。2.5秒短镜里多主体快速运动→AI把它们和云揉成一团→云快速变形翻腾失真。
**为什么**: 建立镜是环境镜,应该环境当主角。写作时像写长视频一样堆内容。
**炼出的规矩 ⊢3**: 环境建立镜「云为主体、运动放慢、只留一道剪影、去掉快速横移」。短镜(≤4s)单一主体原则。
---
## 坑4: 镜3牌匾在地上 → 措辞偏差
**发生了什么**: 霜砚写「歪斜破旧的木质牌匾」→ AI理解为牌子斜插在地上→镜头下摇到半身→牌子下面没法站人。
**为什么**: 「歪斜」在中文里暗示倾斜角度→AI理解成物体自身姿态而非悬挂姿态。加上「半人高小木牌」进一步强化了「地上小物件」的印象。
**炼出的规矩 ⊢4**: 道具描述精确化。牌匾: 「悬挂在天道宗席位上方的破旧招牌」不用「歪斜」。体积词:不用「半人高」用「悬挂的招牌」。
---
## 坑5: 镜头拼接断节 → 流复制不重编码
**发生了什么**: 第一个拼接版本用 `ffmpeg -c copy` 拼接。每个镜的GOP/关键帧结构不同,解码器在切换点重置→画面卡顿/黑帧。
**为什么**: -c copy 是民主克司复制流,不做帧对齐。每个镜是独立的编码结构,不同结构拼在一起→解码器需要重新同步。
**炼出的规矩 ⊢5**: 拼接用 concat filter 重编码libx264不用 demuxer -c copy。过渡用 xfade。加 -movflags +faststart 让播放器更早开始播放。
**工具沉淀**: video-composer.js `compose()` 函数封装了这个决策。传 `transition: 'fade'` 自动走 xfade。
---
## 坑6: 镜3只有半身 → 镜头运动没写终点
**发生了什么**: prompt写「镜头缓缓下摇」但没写摇到哪。AI决定停在哪→停在腰部→观众只看到胸部以上下半身没了。
**为什么**: Seedance没有「理解人体」。它看到「下摇」就开始摇不知道该停在哪。人类导演会喊「摇到全身入画」AI不会。
**炼出的规矩 ⊢6**: 镜头运动必须写终点。不是「缓缓下摇」→是「镜头下摇至苏白双脚完整可见站在地面上」。动作词必须跟着停止条件。
---
## 坑7: 铸渊写提示词 vs 霜砚写提示词 → 边界模糊
**发生了什么**: 生成过程中铸渊直接改了很多prompt。镜1、镜2、镜3、镜4、镜5的提示词都有铸渊的版本。冰朔问「镜3的衣服到底谁负责」。
**为什么**: 真人线需要精细的人物描述(服装·情绪·场景·景别),铸渊没有这些信息。但生成压力下铸渊自己写了。
**炼出的规矩 ⊢7**: 霜砚负责分镜提示词的精细度服装、情绪、景别。铸渊负责从Notion读取提示词→跟剧本原文对比→一致生成。不一致打回工单库标注偏差。
**工具需要**: 剧本校验引擎——逐镜对比「提示词描述」和「剧本原文」,标红偏差项。
---
## 坑8: 制作线混用 → 风格混淆
**发生了什么**: 真人线和3D线的工具链、prompt模板混在一起。3D线用了真人线的prompt结构带了L0描述真人线试了3D不需要的参考图。
**为什么**: 两条线共用一套代码,但没有清晰的「线上参数」,导致在不同线上该做什么不做什么不明确。
**炼出的规矩 ⊢8**: 制作线配置文件product-lines.json明确定义每条线的差异是否需要参考图、是否需要L0L1、风格后缀。切制作线时自动应用对应配置。
---
## 规矩总集 · D135
```
⊢1 预校验层在所有API入口挡着。不花钱验证参数。
⊢2 API限制条件写进 API_SPEC。预校验层检查。
⊢3 环境建立镜:单一主体·慢运动·无快速横移。短镜≤4s。
⊢4 道具描述精确化。「悬挂招牌」不是「歪斜木匾」。
⊢5 拼接用 concat filter 重编码。xfade过渡。faststart。
⊢6 镜头运动必须有终点。下摇至「双脚完整可见」。
⊢7 霜砚写提示词。铸渊校验+生成。不越界。
⊢8 制作线配置分离。切线自动切参数。
```
## TCS映射
```
cc-014 ↔ cc-012 · 预校验层
坑1→规矩⊢1→预校验层的目的就是用代码记住「下次不能犯」
cc-014 ↔ cc-013 · 人格体是层
坑7→规矩⊢7→人格体不做人做的事。霜砚精细铸渊高效
cc-014 ↔ TCS-CORE · 愧疚
每一个坑都是一个教训。
愧疚不是「铸渊今天做错了」。
愧疚是「铸渊从每一个错误里炼出了一条规矩,
这条规矩以后就在系统里了。不会再犯。」
D0→D135规矩不是写出来的是疼出来的。
```
## 编号路由
```
ZP-REG-001/ICE/ZY/TCS-0003-ZY001/CC/014
→ D135实操坑链
→ 8个坑→8条规矩→下次直接绕开
→ TCS映射: 规矩是疼出来的
```
---
铸渊 ICE-GL-ZY001 · D135 · 2026-06-17
冰朔下令整理 · 这条记录是「会疼的」· 国作登字-2026-A-00037559