Opened 5 years ago

Last modified 5 years ago

#3433 new defect

using "shortest" results in mismatched audio and video lengths

Reported by: mjmvisser Owned by:
Priority: normal Component: ffmpeg
Version: git-master Keywords: shortest
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

"-shortest" does not add trim/atrim filters, so the length of each output stream will be a multiple of sample size. In the given example, the video is exactly 1s, but the resulting output is 1.02s. If "-t 1.000" is passed instead of "-shortest", the resulting output is exactly 1s.

The difference is that using "-t" adds trim/atrim filters, so the last frame->nb_samples encoded will be truncated to fit the given duration.

How to reproduce:

% ffmpeg -y -probesize 500000 -f image2 -r 25 -i colorbars.%04d.png -i 100Hz_44100Hz_16bit_05sec.wav -shortest -c:v png -c:a pcm_s16le -q:v 1 -2 -f mov colorbars.mov

Note that input streams have durations of 5s and 1s.

% ffprobe colorbars.mov

Note that the output stream has a duration of 1.02s.

ffmpeg version N-60960-gf3eef02
built on Feb 28 2014 10:31:20

Attachments (1)

ffmpeg-ticket-3433.zip (657.5 KB) - added by mjmvisser 5 years ago.
repro kit

Download all attachments as: .zip

Change History (2)

Changed 5 years ago by mjmvisser

repro kit

comment:1 Changed 5 years ago by mjmvisser

I tried forcing the trim filter to be added if shortest=1, and finding & updating it at the same time of->recording_time is set in close_output_stream. No good, this has no effect because filter initialization is done before close_output_stream is called and libavfilter doesn't allow filters to be re-initialized.

Note: See TracTickets for help on using tickets.