Concatenate Videos Using FFmpeg Concat Demuxer

This article provides a step-by-step guide on how to merge multiple video files into a single file using FFmpeg’s concat demuxer. You will learn how to create the necessary input text file, run the command line instruction, and configure the settings for either a rapid stream copy or a full re-encode, ensuring a seamless output video.

Step 1: Create the Input Text File

The concat demuxer requires a text document containing a list of the video files you want to merge. Create a text file named mylist.txt in the same directory as your video files and add the path to each video file using the following format:

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

If your video files are located in different directories, you can specify relative or absolute paths inside the text file.

Step 2: Run the FFmpeg Command

Once your list file is ready, open your terminal or command prompt, navigate to the folder containing your files, and execute the following command:

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4

Understanding the Command Parameters

Important Considerations for Stream Copying

For the -c copy option to work successfully, all input videos must have identical properties. This means they must share the same:

If the files differ in any of these aspects, the output video may suffer from stuttering, out-of-sync audio, or corruption.

How to Concatenate Videos with Different Formats

If your videos have different resolutions, codecs, or frame rates, you cannot use the stream copy (-c copy) method. Instead, you must re-encode the videos during concatenation so that FFmpeg can unify their formats. To do this, omit the stream copy parameter and specify the video and audio encoders you wish to use:

ffmpeg -f concat -safe 0 -i mylist.txt -c:v libx264 -c:a aac output.mp4

This command re-encodes the concatenated stream into a standard H.264 video with AAC audio, ensuring smooth transitions between different file formats.