课程视频处理流水线 是做什么的?
端到端处理课程录像,同时保留用户要求的输出形态。除非用户明确要求合并的讲座视频,否则优先使用独立片段。不要推断删除本地源文件或已有远程输出的权限。
处理前
- 精确读取用户的源路径和目标路径。将诸如“全部文件”的前导标签视为 UI 文本,除非该标签实际存在于远程路径中。
- 在下载前检查远程文件名、大小、格式以及现有输出。
- 检查本地磁盘空间以及可用的 GPU、FFmpeg 编解码器、WhisperX 环境和 BaiduPCS-Go 登录状态。
- 在采样文件名、转录文本和视频结构后,选择合适的课程适配器。请阅读 references/course-adapters.md 以了解已知风格并检测不熟悉的风格。
- 确认输出模式:独立片段、合并片段,或同时包含两者。当未指定时,默认为独立片段。
流水线
- 下载并验证每个源视频,保持其自然顺序不变。
- 独立转录源文件。复用已有的有效转录和片段计划,避免重复的 GPU 工作。
- 构建确定的片段或单元清单。当边界标记不明确时,审查候选边界。
- 渲染片段并为每个片段生成一个 SRT 文件。仅在用户请求时才生成合并视频和组合 SRT。
- 生成 Markdown 清单,包含标签、输出文件名、源文件名、源时间戳、时长以及任何适配说明。
- 在上传前运行输出验证器。
- 上传到用户指定的远程目录,并验证远程文件数和文件名。
- 仅在验证后并且仅在用户授权删除的范围内进行清理。
必需输出契约
对于每个选定的片段或保留的知识单元,需提供:
- 一个 MP4 文件,除非请求的单元仅包含元数据。
- 一个时间戳归零且与之同名的 SRT 文件。
- 讲座或章节 Markdown 列表中的一行。
- 稳定的顺序前缀以及原始的示例或单元 ID。
对于合并模式,在本地保留独立的标准化片段,并额外生成一个合并的 MP4 文件和一个时间线调整后的组合 SRT 文件。除非用户要求覆盖或删除,否则不要替换已有的合并或非合并版本。
执行说明
- 使用源特定的转录文件,以便每个输出片段的时间戳归零。
- 在支持的情况下,优先使用 h264_nvenc 进行精确的 FFmpeg 裁剪。回退到 libx264,而不是静默跳过精确的边界。
- 在 Markdown 中保留课程原文;仅规范化文件名和管理性标签。
- 遇到源文件缺失、时间戳无效、零字节媒体或无法解释的数量不匹配时停止处理。仅重试失败的文件。
- 对于大规模批处理,在下载、转录、渲染和上传各阶段后报告具体进度。
在运行完整流水线之前,请阅读 references/workflow.md。在选择拆分策略时,请阅读 references/course-adapter.md。在构建清单、Markdown 列表、上传、验证或清理时,请阅读 references/manifest-upload.md。