diff --git a/gnommo/renderer.py b/gnommo/renderer.py index b43bbfc..03caa9d 100644 --- a/gnommo/renderer.py +++ b/gnommo/renderer.py @@ -1292,17 +1292,20 @@ def build_filter_complex( _, first_video_source, _ = plan.narration_videos[0] use_channels = first_video_source.use_audio_channels if use_channels == "auto": - # Probe the real narration audio to pick left/right/both. In concat - # mode that's the first processed segment; otherwise the single - # narration input. (plan carries the dirs — this function doesn't.) + # Concat mode = pre-processed segments: preprocess already resolved + # the channel and baked it into the audio, so play it as-is ("both"). + # Re-probing here means a full-file volumedetect pass on the narration + # (tens of seconds on a long take) for no benefit — that was the render + # command taking ~30s to build. if narration_concat and plan.narration_segments: - narration_path = plan.narration_segments[0].source_path + use_channels = "both" else: + # Legacy single-input narration (not preprocessed): resolve once. narration_path = _resolve_video_path( plan.videos_dir, first_video_source, plan.shared_assets_dir, plan.project_path, ) - use_channels = _resolve_auto_channel(narration_path) + use_channels = _resolve_auto_channel(narration_path) channel_filter = _build_audio_channel_filter(use_channels) narration_volume = first_video_source.volume