PRODUCTION MAP / JIAHUI YANG / 2026-09-20

Jiahui Yang · 播客制作流水线


画面与声音先分别处理,在 Resolve 剪辑中汇合。
再用剪辑后的音轨制作字幕与 HTML,导出透明叠层,回到 Resolve 合成成片。

输入 + 制作配方 今晚渲染素材保留 已按审核清理旧副本
01

先看整条线

先剪出节目,再给这条时间线做字幕。遮罩、深度和增强音频都作为素材参与剪辑;字幕导出后才加入最终合成。

flowchart LR
  S["Source media"] --> P["Picture + audio"]
  P --> E["Resolve edit"]
  E --> F["Final composite"]
  E -->|"timeline audio"| C["Caption overlay"]
  C --> F
  F --> O["Final film"]
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class O artifact
        
素材 → 画面 / 音频处理 → Resolve 剪辑 → 字幕叠层 → 最终合成。 字幕时间戳属于剪辑后的节目;后续改变剪辑长度时,需要同步更新字幕与 HTML 时间轴。
PICTURE人物清楚,背景虚化

两机位 RGB → 人物遮罩 + 静态深度 → Fusion 景深合成。

AUDIO降噪后参与剪辑

原音频 → Adobe Podcast 手动增强 → 独立 WAV 或视频内音轨。

CAPTIONS文字变成透明画面层

ChatGPT 字幕 → 人工校对 → Claude HTML → 透明 MOV。

脚本 / 编辑处理手动或对话操作 保留的制作产物
02

画面:遮罩与静态深度

C018 与 P1030090 分别处理,保持各自帧率、尺寸和帧索引。两条支线从同一机位原片出发,最后在 Fusion 汇合。

2A · 人物遮罩:先分出两人,再沿时间传播

flowchart LR
  V["Camera RGB"] --> S["SAM3 seeds"]
  P["Points + boxes"] --> S
  S --> M["MatAnyone2 chunks"]
  M --> B["Overlap blend"]
  B --> L["Left / right alpha"]
  L --> U["Subjects alpha"]
  U --> H["Expanded holdout"]
  classDef manual fill:#F7EBE1,stroke:#B13254,color:#554037,stroke-dasharray:5 4
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class P manual
  class L,U,H artifact
        
人物提示 → 初始遮罩 → 分块时序抠像 → 重叠融合。 每机位导出左、右、双人并集、扩张 holdout 四个遮罩 MOV;两机位共八个,今晚全部保留。

并集 alpha 控制人物边缘保护。
holdout 扩大人物覆盖区,用于补背景,降低虚化时人物颜色溢入背景。

全帧 PNG 与推理块可重算;原片、提示参数、三个修正 seed、实际脚本和最终 MOV 留下。

机位、参数与保存文件
机位处理画布 / 遮罩尺寸生产入口
C0182160 × 1214 · 24000/1001 fps a001_full_matte.py + a001_full_matte_remainder.py
P10300901920 × 1080 · 30000/1001 fps p1030090_mattes.py

稳定段使用 160 帧块、32 帧重叠;进出场使用单独提示与修正。 浮点 alpha 在重叠区融合后再编码。并集为左右 alpha 相加后截断到有效范围。

输出后缀:person_left_alpha.movperson_right_alpha.movsubjects_alpha.movsubjects_holdout.mov。 主合成接并集与 holdout;左右单人遮罩保留作独立编辑素材。

配方:workflow/comfyui/scripts/、episode/、graphs/、patches/、versions.json

2B · 背景深度:短片估计,整段共用一张图

flowchart LR
  B["Empty background"] --> V["Video Depth Anything"]
  V --> M["Temporal median"]
  M --> N["Normalize depth"]
  N --> E["Static depth EXR"]
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class E artifact
        
空背景短片 → 深度估计 → 时间中值 → 统一归一化。 每机位保留一张 RGB half EXR,作为背景虚化强度图;最终合成只依赖这两张静态图。
深度采样与模型

Video Depth Anything Small,video_depth_anything_vits.pth,448 输入、FP16。 从 32 帧短片中取中间 16 帧做中值,再用 0.5 / 99.5 百分位统一归一化。

C018 使用深度批次的第 8–23 帧;P1030090 输入第 210–241 帧,取第 218–233 帧。 输出后缀为 background_depth_static_rgb_half.exr

03

声音:两种入口,两种交付

Adobe Podcast 是手动上传和下载。这里保留操作记录、参数与处理结果,方便下一期照着做。

3A · 主采访:外录原音频 → 独立增强 WAV

flowchart LR
  A["Original recording"] --> T["Trim + split"]
  T --> D["Adobe Podcast"]
  D --> C["Crossfade stitch"]
  C --> W["Enhanced WAV"]
  W --> R["Resolve audio"]
  classDef manual fill:#F7EBE1,stroke:#B13254,color:#554037,stroke-dasharray:5 4
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class D manual
  class W artifact
        
对齐取段 → 四段上传 → 手动增强 → 交叉淡化拼接。 Resolve 当前引用 C018_adobe_enhanced_stitched.wav;原外录 AAC 另存在 input。

3B · C016 / C017:原音轨 → 写回视频

flowchart LR
  A["Camera audio"] --> D["Adobe Podcast"]
  D --> M["Merge / select"]
  M --> V["Video audio track"]
  V --> R["Resolve edit"]
  M --> W["C017 WAV variants"]
  classDef manual fill:#F7EBE1,stroke:#B13254,color:#554037,stroke-dasharray:5 4
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class D manual
  class V,W artifact
        
C016 分两段增强后拼接;C017 保留不同增强强度。 当前视频内已包含增强音轨。视频、另存原音频,以及媒体池里的两份 C017 WAV 都保留。
本期音频参数与文件位置

主采访从外录音频偏移 24.360083333 秒开始取段,48 kHz 双声道。 四段上传文件均小于 500 MB,相邻段有 20 秒重叠;下载后用 0.5 秒互补余弦交叉淡化拼接,输出 24-bit PCM WAV。

本期 Adobe 输出记录:Enhance Speech v2,speech 50%、background 10%、music 10%。 C017 另留 background / music 30% 的版本。下次按当时界面重新设置。

原音频:input/external_recording_original_audio.m4a、C016 / C017 的 *_original_audio.m4a
参数与拼接脚本:workflow/audio/reference/
本期完整文件:Render/Jiahui Yang.dra/MediaFiles/A001_04131556_C018_adobe_enhanced_stitched.wav

04

字幕与 HTML:从节目时间线出发

字幕文本由用户通过 ChatGPT 手动生成;HTML 由 Claude 按已保存的 video_caption skill 制作。 对话操作记录下来,导出脚本与实际素材留在包里。

flowchart LR
  T["Timeline audio"] --> G["ChatGPT subtitles"]
  G --> S["Corrected SRT"]
  S --> H["Claude HTML"]
  A["Chapters + assets"] --> H
  H --> B["Browser capture"]
  B --> O["Transparent MOV"]
  classDef manual fill:#F7EBE1,stroke:#B13254,color:#554037,stroke-dasharray:5 4
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class G,H manual
  class S,O artifact
        
剪辑后音轨 → 字幕与校对 → HTML 时间轴 → 透明视频。 HTML 包含字幕、章节进度、术语解释、行走动画和聊天布局;浏览器逐帧截图后编码成带 alpha 的 MOV。
TEXT文字与时间

分段 / 合并 / 校对 SRT,改字记录、章节与术语事件全部保留。

DESIGNHTML 与配套素材

本期完整 HTML、头像、八张行走帧;聊天内容已嵌入 HTML。

EXPORT透明叠层

截图时隐藏采访视频与背景。背景图、采访画面由 Resolve 单独合成。

Claude skill 内的制作步骤
  1. 把分段 SRT 接回节目时间轴,人工核对识别错误,保存校对稿。
  2. 将 SRT 转成 JSON,整理章节与术语的出现时间。
  3. 准备行走动画帧、头像和聊天内容,填入 HTML 模板。
  4. 调整字幕、进度条、术语卡与聊天布局,控制采访窗口出现的时段。
  5. 逐帧更新 HTML 时间,截图透明画面,编码为 ProRes 4444。

本期字幕音频由剪辑导出的 Timeline 1.mov 提取,按 0–1268 秒、1268–2536 秒和余下部分分成三段。 原始 ChatGPT prompt 未找到;保留用户说明及实际文本产物。

导出视口 1080 × 607,放大至 2160 × 1214,24000/1001 fps。 完整叠层约 1:03:22。行走动画使用实时时钟,重新导出可能有帧级差异。

制作 skill:workflow/captions/skill/README.md
本期 HTML:workflow/captions/episode/progress_bar_preview.html
导出入口:workflow/captions/capture_overlay.py
交付:Render/Jiahui Yang.dra/MediaFiles/overlay_full_2160x1214.mov

05

Resolve:合成画面,交付节目

Fusion 先生成景深处理后的采访画面。Resolve 时间线负责剪辑、调色、画面布局、声音,以及透明 HTML 叠层的最终组合。

5A · Fusion:补背景,再把虚化变化加回人物外侧

flowchart LR
  R["Camera RGB"] --> P["Prepare background"]
  F["Frozen frame"] --> P
  H["Soft holdout"] --> P
  P --> B["Depth blur"]
  D["Static depth"] --> B
  P --> C["Apply blur delta"]
  B --> C
  R --> C
  M["Subjects alpha"] --> C
  C --> O["Fusion output"]
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class O artifact
        
RGB + 冻结帧 + 柔化 holdout → 补背景 → 按深度虚化 → 保护人物的差值合成。 最终接到 MediaOut 的是 CustomTool2;图按该输出的依赖绘制。
节点与公式:为什么两种遮罩都需要保留
图中步骤实际节点用途
Frozen frameTimeStretcher1从同机位 RGB 取冻结帧。
Soft holdoutSUBJECT_EXP → Blur1 → Bitmap2扩张遮罩再柔化,用来覆盖人物区域补背景。
Prepare backgroundMerge1按 holdout 把冻结帧合入 RGB,得到待虚化背景。
Depth blurDEPTH → CustomTool1 → VariBlur1映射静态深度,控制空间变化的虚化强度。
Subjects alphaSUBJECT → Bitmap1读取并集遮罩的红色通道作为人物保护权重。
Apply blur deltaCustomTool2 → MediaOut把背景虚化的差值加回原图,保留人物。
output = RGB + (1 - subjects_alpha) * (blurred_background - prepared_background)

人物内部 alpha 接近 1,保持原 RGB;人物外侧 alpha 接近 0,加入背景虚化变化。 冻结帧位置、虚化参数及各镜头设置由 Resolve 项目保存。

5B · 时间线:这些层一起进入最终渲染

flowchart LR
  V["Interview + B-roll"] --> R["Resolve timeline"]
  B["Background image"] --> R
  A["Audio + beep"] --> R
  C["Caption overlay"] --> R
  R --> O["Final render"]
  classDef artifact fill:#DBC8B8,stroke:#B13254,color:#554037,stroke-width:2px
  class O artifact
        
采访 / B-roll + 背景图 + 声音 / 消音提示音 + 透明字幕。 Color 页还单独读取两机位 holdout 作为外部遮罩,其路径需随项目迁移。时间线负责镜头切换、调色、采访窗口缩放和各层时序;今晚使用项目 Jiahui Yang - portable
06

文件留存:输入、配方、今晚的渲染依赖

整个 Jiahui Yang/ 一起拷走。原料只有一份;脚本、手动步骤和本期编辑状态一起保存。

INPUT / 原料input/

相机视频、原音频、B-roll、背景图与提示音。共有素材的唯一实体放这里。

WORKFLOW / 配方workflow/

ComfyUI 脚本与版本、提示参数、Adobe 记录、字幕稿、HTML、导出工具。

RENDER / 交付素材Render/

Resolve 项目、可用 RGB、遮罩 MOV、深度 EXR、增强音频和透明叠层。

成片所需保留位置旧位置为何可成为清理候选
拍摄 / B-roll RGBinput/;C018、P103 另留今晚所需 RGB 转码新包已有对应输入或当前可用素材;原位置为重复入口。
人物遮罩、静态深度MediaFiles 内 8 个遮罩 MOV + 2 个 EXR全片逐帧序列、推理块由原片与配方重建。
原音频、当前增强结果input 原音频;视频内增强轨;MediaFiles 增强 WAV上传切片、重复下载、已拼接的分段不再承担唯一音频来源。
字幕、HTML、头像 / 行走帧workflow/captions/;MediaFiles 完整透明 MOV实际源文件与完整导出均已收录。
背景图、消音提示音input/Render 中只放指向 input 的相对链接。
剪辑、调色、合成接线Render/Jiahui Yang.dra/project.drp由 Resolve 项目保存;原项目库继续保留。

MediaFiles = Render/Jiahui Yang.dra/MediaFiles/。该目录只有一层:16 个实体文件 + 10 个指向 input 的相对 symlink。

三个需要明确的边界
C016 / C017 的相机原编码此前已被替换;本包保存现有 FFV1 视频与另存原音频。
外录 MKV 已不在历史位置;目前保存的是从它无重编码提取的 AAC 原音轨。
Adobe、ChatGPT、Claude 的操作与产物可复用;再次调用服务不保证生成完全相同的结果。
迁移与清理范围

复制整个项目文件夹并保留相对 symlink,如 cp -arsync -a。 同时存在于 input 与 Render 的媒体只保留一个实体。换路径后的 Resolve 恢复步骤见包内 README。

ComfyUI 安装、模型权重、Python 环境、全局 video_caption skill、共享 Blender 素材和其他节目均保留。 本包记录软件版本与节点补丁,模型和运行环境需要在工作电脑上另行准备。

已按审核清理旧副本。59 组旧副本和中间文件已按用户批准的清单永久删除。 路径与保留去向见 workflow/review/DELETE_REVIEW.md,执行记录见 workflow/review/deletion_completion.json

07

下一期:保留方法,替换本期数据

可以沿用每期需要重新给
ComfyUI 分块 / 融合 / 导出脚本原片、尺寸帧率、范围、人物提示点 / 框、空背景采样区间。
Adobe 分段与拼接方法新原音频、视频起点偏移、当次增强设置和下载结果。
video_caption skill、HTML 模板、导出脚本新时间线音频、校对 SRT、章节术语、头像、聊天和布局内容。
Fusion 合成结构新 RGB / 遮罩 / 深度引用、冻结帧、各镜头参数与剪辑。

新一期建立独立目录和新的运行状态;本期保存的完成记录仅用于回看参数。 转码按需生成 Resolve 可读视频与 PCM 音频,保持帧率、帧数、方向和时间偏移。