Audio stream shorter than video stream

2.1k Views Asked by At

I generate a bunch of videos by looping .PNG inputs along with .AMR audio.

ffmpeg -loop 1 -i slide001.png -i slide001.amr -vcodec rawvideo -acodec pcm_s16le -t 5 slide001.avi

Eventually I join the .AVIs using Mencoder. I haven't had much success trying to join them with FFmpeg.

It seems that because the .AMR's actual duration is shorter than the 5 seconds I specified for example, when the time comes to join the .AVIs, the audio stream will be out of sync (ahead of the video).

I suspect I need to find a way of padding the audio with silence or specifying its duration somehow so that the audio and video streams in my .AVIs are of equal length before joining them.

Any ideas?

Thanks.

1

There are 1 best solutions below

0
On

I ended up solving this by using the SoX audio processor in addition to ffmpeg: http://sox.sourceforge.net/Main/HomePage

The command I use is

sox slide001.wav slide001padded.wav pad 0 3

The above adds 3s of silence to the end of the audio. When ffmpeg's "-t 5" duration command is applied in the video creation, it trims the extra silence so that the video and audio streams are the same length.

This works only when the audio is shorter than the video. You need to add enough silence so that the audio duration equals or exceeds the video duration.