fix: 视频 filter_complex 排除纯音频 clips 修复 FFmpeg exit=234 #1321
Reference in New Issue
Block a user
Delete Branch "fix/audio-only-clips-in-filter-complex"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bug 描述
Staging Worker 日志显示渲染失败:FFmpeg 构建 filter_complex 时,对纯音频文件 voice.mp3 也生成了
[3:v]trim=...scale=...[v3]视频滤镜链,但 voice.mp3 没有视频流,导致Stream specifier :v matches no streams,exit=234。根因
_build_filter_complex遍历所有图层的 clips 生成视频滤镜链,但没有区分视频 clips 和纯音频 clips。配音素材(voice_library)和 TTS 配音片段(clip_type="audio")被错误地加入了视频 filter_complex。修复
clip_type="audio"的 clips,不生成-i输入和[N:v]滤镜链mix_audio()独立处理,不受影响测试
新增 6 个单元测试:
全量测试通过 ✅,ruff lint 通过 ✅
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
layer_clip_indices时使用了列表推导式配合all_clips.index(c)。由于list.index()的时间复杂度是 O(N),若all_clips较大且层级较多,这会导致 O(M*N) 的复杂度。建议预先构建一个{clip: index}的字典映射,将查找复杂度降为 O(1)。✅ 良好实践
if not all_clips的检查并抛出明确的异常,有效防止了后续逻辑在空列表状态下运行导致的不可预知错误。all_clips时排除audio类型,并在后续layer_clip_indices计算时同步过滤,确保了索引查找的一致性,避免了ValueError。🤖 由 AI 代码审查机器人自动生成 | 2026-08-09 07:05:56 | 模型:
🗑️ 预览环境已清理
PR #1321 已关闭或合并,对应的预览环境已被清理。