用途与实际影响
这项功能怎样使用
为什么需要它
无声视频轨或同名旧文件看似完整,却可能不是本期内容。交付层不仅收齐成片、封面与章节,还核对来源、真实帧数、总时长和音视频起点;可选字幕验证通过后再进入哈希清单,防止带走半新半旧的一包文件。
举个实际例子
我可以说:“旁白为主,背景音乐只在空隙明显;封面用本期标题,章节从开场开始。检查后再告诉我是否值得观看。”系统会收齐成片、封面和章节;没有旁白时不会交出一条静音成片冒充完成。
最后我会得到什么
得到本期成片、封面和从开头开始的章节;需要时另带字幕与文件清单。自动检查通过只说明文件和来源能对应,人仍要完整看一遍。
正常时
成片、封面与章节都属于当前来源,音视频和时长检查通过后生成交付清单。
发现问题时
音乐音量、封面内容和章节措辞仍由人看;文件结构有问题就回到相应制作步骤。
入口不可用或证据不足时
缺画面、旁白、标题或章节时停止,不用静音片或占位标题冒充交付。
从哪里开始
渲染完成后在视频工程按需运行 merge、cover、chapters、subtitles,最后 verify 与 manifest(清单),并实际观看成片。
需要准备什么
- 要交付的成片
- 封面标题或可选主图
- 是否需要背景音乐、章节或字幕
从开始到拿到结果
- 1
收齐交付物
合成画面、旁白、封面和从开头开始的章节;需要时再做字幕与背景音乐。
- 2
机器核对本期来源
检查画面、声音、时长和文件是否属于当前作品,然后生成交付清单。
- 3
本人完整观看
看画面、听声音并确认内容;上传平台是后续独立决定。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
交付结构检查已实现;本轮无实际成片验收关键规则与设计选择
BGM 是可选输入,旁白不是;没有旁白拒绝最终交付。
verify 检查的是结构和有限时间差,不判断文案事实、音色表现或平台审核。
项目没有上传动作,READY 后的投稿仍由本人决定。
本模块用到的名词
- mux(音视频封装)
- 把已经编码的视频轨和声音流放进同一个 MP4,不等同于重新设计画面。
- sidechain ducking(侧链压低)
- 旁白出现时自动降低背景音乐音量,让人声保持清楚。
- READY(交付结构就绪)
- 所有机器可查的交付合同通过;不是人工已经看完,也不是平台已经接收。
专业定义
结构通过后才生成交付清单;字幕按需导出,READY 后仍要真人观看。
解决什么
防止把无声视频轨、尺寸正确的空封面或有文件无内容的交付包误认为本期完成。
当前怎样实现
- merge.concat_audio 按规范编号拼接 MP3,统一配置使其可 stream-copy。
- 有 BGM 时先统一立体声,使用 sidechaincompress 在旁白出现时压低音乐,混合后限制峰值并做 1.2 秒尾淡出。
- cover.py 用 Playwright 渲染 cover_base.html;PROJECT_TITLE 不能仍为 Untitled Video。
- chapters.py 把 scene 组和累计时长转换为 MM:SS/HH:MM:SS,第一章补到 00:00,并对数量、标题长度和过近章节发警告。
- cleanup.verify 检查当前来源、总帧与总时长、视频/音频流时长及起点、画布/帧率/编码、PNG 封面与章节;subtitles 生成全片 SRT/WebVTT,workflow 的 manifest(清单) 只在验证通过后纳入文件并写 delivery.json。
执行流程
- 1
确认 video_track 与所有旁白存在。
- 2
拼接旁白并与视频合成,可选加入 BGM。
- 3
按当前标题和可选主图生成封面。
- 4
从 chapters.json 生成章节,按需要导出并验证全片字幕。
- 5
运行 verify 逐项阅读,再用 manifest(清单) 生成当前交付文件清单。
- 6
实际观看最终视频,再决定投稿。
边界
- 字幕与哈希清单已经实现;完整投稿文案、上传、平台回执仍不属于此工具。
- 封面主图是可选设计输入,尺寸通过不代表主图或标题内容优质。
- 本轮没有真实 final_output、封面、章节或人工观看结果。
失败与恢复
- 没有旁白音频
- merge 直接失败,不创建静音 final_output。
- 标题仍是占位值
- cover 与 verify 拒绝,把本期标题补清后再生成。
- 媒体流或时长不符
- 保留 ffprobe 事实并回到 render/merge,不靠改文件名通过。
真实入口
E:\Projects\Archives\video-scaffold\pipeline\merge.py旁白、BGM 与最终 MP4
E:\Projects\Archives\video-scaffold\pipeline\cover.py4K 封面
E:\Projects\Archives\video-scaffold\pipeline\chapters.py章节目录
E:\Projects\Archives\video-scaffold\pipeline\cleanup.py最终交付检查
如何验证
- 回归用受控 ffprobe 响应验证完整交付通过,并验证无音频、占位标题和未解析 cue 必须失败。
- 当前源码含 Linux CPU 隔离短片 CI,生产 AV1 NVENC 与显式 Fish 路线独立;本轮没有执行 smoke/demo,不能把受控验证写成新真实作品。
- 完整视频 E2E(端到端验证) 与人工观看仍为具名未验证项。
与其他模块的关系
渲染模块交出无声 video_track;本模块拥有最终可带走文件和结构门,恢复模块解释哪些中间结果能继续使用。
