mirror of
https://github.com/calesthio/OpenMontage.git
synced 2026-08-05 23:24:27 +08:00
full_mix with ducking enabled (the default) failed for a single narration track + one music bed — the most common shape — because the ducking branch appended an acopy[speech_dup] filter whose output pad was never consumed, leaving the filtergraph with a dangling output that ffmpeg rejects. For a single speech track speech_out is '[a0]' (starts with '[a'), so the guarded append fired; the compensating pop() only removes the empty-string case from the multi-speech branch, so the dead pad survived exactly in the single-narration case. The speech stream is already re-derived for the final mix via [speech_out], and ffmpeg auto-splits the reused input label, so the duplicate is unnecessary. Multi-speech and SFX paths are unaffected. Adds regression tests for single- and multi-narration full_mix with ducking. Closes #265