6

I have 15 video files which I want to merge with ffmpeg. I want to save time by merge all of the video files in a single command line, not cut it one by one and merge it. Thanks.

10

Use the concat demuxer.

First, create a text file with the filenames.

file '1.mp4'
file '2.mp4'
file '3.mp4'
...
file '13.mp4'
file '14.mp4'
file '15.mp4'

Then, run the concat command.

ffmpeg -f concat -i textfile -c copy -fflags +genpts merged.mp4

For this to work, all videos should have same properties such as codec, resolution, framerate, sample rate, etc.

If they are not, you can encode the concat.

ffmpeg -f concat -i textfile -fflags +genpts merged.mp4

Also see FFmpeg Wiki: Concatenate.

| improve this answer | |
  • Please explain how to "encode the concat". The command line you have provided for this does not work for me. Could you perhaps provide an example? – Arete Mar 18 '17 at 14:43
  • 1
    @Arete Post a new Q with log of your ffmpeg command execution as well as properties of the input files + the list as well. – Gyan Mar 18 '17 at 15:33
  • Second command is working well but audio is missing! – Jay Patel Mar 20 '18 at 7:19
1

Gyan's suggestion did not work for me. The output video from the suggested commands had the same duration as the first input, and so video 2 and 3 content was missing, and my media player crashed trying to play the output.

I did however find my answer in the reference he provided: http://trac.ffmpeg.org/wiki/Concatenate#filter

ffmpeg -i v1.mp4 -i v2.mp4 -i v3.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" v_out.mp4

This command worked for videos all having both video and audio streams. For one video not having audio, I modify the command slightly like so:

ffmpeg -i v1_NoAudio.mp4 -i v2.mp4 -i v3.mp4 -filter_complex "[0:v:0][1:v:0][2:v:0]concat=n=3:v=1[outv]" -map "[outv]" v_out_NoAudio.mp4

Effectively, I just removed any portions of the command about audio. This discards the audio from the second and third videos, as a rule of using this filter is that the channels remain the same in all videos.

| improve this answer | |
  • This worked for me, because input files differed in metadata (although I could not tell what was wrong, since they had apparently the same resolution, codec, etc...). – FonzTech Aug 28 '19 at 21:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.