From 628af864afd70c2afbd4b7985e57a9e7f70c90f2 Mon Sep 17 00:00:00 2001 From: vp Date: Fri, 27 Mar 2026 16:47:22 +0300 Subject: [PATCH] Narrow audio fallback to data/encode errors and preserve mux failures --- comfy_api/latest/_input_impl/video_types.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/comfy_api/latest/_input_impl/video_types.py b/comfy_api/latest/_input_impl/video_types.py index 5e2e2b1af..90a692370 100644 --- a/comfy_api/latest/_input_impl/video_types.py +++ b/comfy_api/latest/_input_impl/video_types.py @@ -464,6 +464,8 @@ class VideoFromComponents(VideoInput): output.mux(packet) if audio_stream and self.__components.audio: + encoded_audio_packets = None + flush_audio_packets = None try: audio_np = waveform.float().cpu().contiguous().numpy() if not np.isfinite(audio_np).all(): @@ -472,14 +474,16 @@ class VideoFromComponents(VideoInput): frame = av.AudioFrame.from_ndarray(audio_np, format='fltp', layout=layout) frame.sample_rate = audio_sample_rate frame.pts = 0 - mux_packets(output, audio_stream.encode(frame)) - - # Flush encoder - mux_packets(output, audio_stream.encode(None)) - except Exception as exc: - logger.warning( - "Failed to encode audio track, saving video-only output: %s", exc + encoded_audio_packets = audio_stream.encode(frame) + flush_audio_packets = audio_stream.encode(None) + except (av.error.ArgumentError, ValueError, TypeError) as exc: + logger.error( + "Audio encode failed due to invalid audio data; skipping audio track and saving video-only output: %s", + exc, ) + else: + mux_packets(output, encoded_audio_packets) + mux_packets(output, flush_audio_packets) def as_trimmed( self,