fix: trimmed transcode with delayed audio start

Signed-off-by: bigcat88 <bigcat88@icloud.com>
This commit is contained in:
bigcat88 2026-07-09 12:15:52 +03:00
parent 070a391439
commit 97c682e39f
No known key found for this signature in database
GPG Key ID: 1F0BF0EC3CF22721
2 changed files with 9 additions and 0 deletions

View File

@ -743,6 +743,8 @@ class VideoFromFile(VideoInput):
if to_skip >= resampled.samples:
continue
audio_started = True
if duration and frame_start > start_time:
duration_cap = min(duration_cap, math.ceil((start_time + duration - frame_start) * sample_rate))
if to_skip:
pending_audio.append(audio_frame_from_ndarray(resampled.to_ndarray()[..., to_skip:]))
continue

View File

@ -487,6 +487,13 @@ def test_save_to_transcode_learns_unprobed_audio_params():
assert trimmed_before_audio["audio_codecs"] == []
assert trimmed_before_audio["audio_seconds"] is None
buffer.seek(0)
trimmed_crossing_audio = transcode_and_probe(VideoFromFile(buffer, start_time=11.5, duration=1))
assert trimmed_crossing_audio["frames"] == fps
assert trimmed_crossing_audio["audio_codecs"] == ["aac"]
assert trimmed_crossing_audio["video_seconds"] == pytest.approx(1.0, abs=0.05)
assert trimmed_crossing_audio["audio_seconds"] == pytest.approx(0.5, abs=0.1)
def test_save_to_transcode_trimmed_fragmented_mp4_keeps_audio():
"""Fragmented mp4 (MediaRecorder, DASH/HLS-derived files) delivers audio well behind