fix(render_audio): drop source video audio in mix_audio #1249
Reference in New Issue
Block a user
Delete Branch "fix/skip-source-audio-in-mix"
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?
背景
用户上传的视频素材经常带有环境杂音,如果直接提取主图层音频作为成片音轨,杂音会被混入最终输出,影响 TTS 配音 / BGM 的听感。
成片应只保留:TTS/配音(audio role 图层)+ BGM。
改动
apps/worker/video_processing/render_audio.py—mix_audio():main_clips(main/broll/overlay/corner_voice)和audio_clips(audio role)后,强制清空main_clips = [],从而跳过源视频原始音频的提取与 concat。main_clips的clip_has_audio过滤(已无意义)。main_clips为空时,将audio_clips作为有效主音频走concat_main_audio拼接;当二者均有则走mix_with_independent_audioamix 混音。注意:
auto_clip_service._score_candidate是 per-clip 模板匹配评分(quality 0.5 + duration 0.3 + classification 0.2),用途与全局选素材不同,未纳入本次统一。测试
更新
tests/unit/test_unified_render_service.py中依赖旧行为(从 main 图层提取音频)的 13 个用例,改为验证「main 音频被丢弃、仅 audio role 生效」的新行为;并新增 1 个直接覆盖mix_with_independent_audioamix 路径的用例。全量单测:13588 passed, 12 skipped ✅
🚀 预览环境已部署
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
main_clips赋值为空列表[],导致第 144 行的if main_clips:判断恒为 False,第 147-148 行的代码块(effective_main = main_clips等)实际上为死代码。同时,第 155 行的if effective_main and not effective_audio:判断在当前逻辑下等价于if audio_clips:,导致else分支(调用mix_with_independent_audio)在mix_audio函数中不可达。建议直接简化逻辑为effective_main = audio_clips,并移除不可达的else分支,以提高代码可读性并明确业务意图。✅ 良好实践
test_mix_with_independent_audio_amix单元测试,虽然主流程不再调用该函数,但验证了底层混音逻辑的健壮性,这是良好的防御性测试实践。✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好
🤖 由 AI 代码审查机器人自动生成 | 2026-08-06 10:54:59 | 模型:
🗑️ 预览环境已清理
PR #1249 已关闭或合并,对应的预览环境已被清理。