Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mix audio/video of different lengths with ffmpeg

Tags:

ffmpeg

I want to mix video from video.mp4 (1 minute duration) and audio from audio.mp3 (10 minute duration) into one output file with a duration of 1 minute. The audio from audio.mp3 should be from the 4 min - 5 min position. How can I do this with ffmpeg?

like image 479
Yura Shinkarev Avatar asked Oct 23 '12 23:10

Yura Shinkarev


1 Answers

If video.mp4 has no audio

You can use this command:

ffmpeg -i video.mp4 -ss 00:04:00 -i audio.mp3 -c copy -shortest output.mkv
  • The audio will be from the 4 minute position (-ss 00:04:00) as requested in the question.

  • This example will stream copy (re-mux) the video and audio–no re-encoding will happen.

If video.mp4 has audio

You will have to add the -map option as described here: FFmpeg mux video and audio (from another video) - mapping issue.

If the audio is shorter than the video

Add the apad filter to add silent padding:

ffmpeg -i video.mp4 -ss 00:04:00 -i audio.mp3 -c:v copy -af apad -shortest output.mkv

Note that filtering requires re-encoding, so the audio will be re-encoded in this example.

like image 55
llogan Avatar answered Nov 18 '22 10:11

llogan