I have two *.avi files:


How do I merge these two files using a command-line or GUI?

  • me curious why prefer ffmpeg? – tshepang Dec 31 '10 at 7:32
  • ffmpeg is a very powerfull tool, so I thought it would be capable of merging two files together. However, as you can see from Micheal's answer we went with Avimerge. – Stefan Dec 31 '10 at 8:33
  • 1
    You can use ffmpeg command if you like (as it is not GUI I don't post it as answer) IIRC. – Maciej Piechotka Dec 31 '10 at 9:59
  • @Maciej You might post your answer here. – tshepang Dec 31 '10 at 11:36
  • excuse me, but you still didn't tell me why ffmpeg – tshepang Dec 31 '10 at 12:29

There's a dedicated tool to do this, avimerge:

avimerge -o cd.avi -i cd1.avi cd2.avi

If not installed, install transcode: Avimerge is part of transcode package: https://manpages.debian.org/jessie/transcode/avimerge.1.en.html http://manpages.ubuntu.com/manpages/bionic/man1/avimerge.1.html

|improve this answer|||||

Easy with mencoder (shipped with mplayer in Arch Linux):

$ mencoder -oac copy -ovc copy video1.avi video2.avi -o final.avi
|improve this answer|||||

Avidemux can paste two videos together, at least if they have the same resolution and a few other constraints. Use “Append” from the “File” menu.

|improve this answer|||||

You can merge avi files with avimerge from Transcode package:

avimerge -i file1.avi file2.avi -o output.avi

I know that it isn't GUI tool, but to have GUI you could use that script:

file1=`kdialog --getopenfilename ~/ \*.avi`
file2=`kdialog --getopenfilename ~/ \*.avi`
output=`kdialog --getsavefilename ~/ \*.avi`
avimerge -i $file1 $file2 -o $output

It uses kdialog so it's for KDE users, GNOME users should modify it to use Zenity...

|improve this answer|||||
  • Your thirst for going ahead and give the Answer regardless should have been quenched by going here: unix.stackexchange.com/questions/2273/…. Also, see my Comment on the Accepted Answer. – tshepang Jan 2 '11 at 7:43
  • Oh, sorry - somehow I missed that question... – pbm Jan 2 '11 at 9:30

What about using ffmpeg concat like that:

ffmpeg -f concat -i \
<(for f in $PWD/*.avi;do echo "file '$f'";done) \
-c copy output.avi

If you get an error Unsafe file name add -safe 0 between concat and -i.

|improve this answer|||||

If you're not wedded to the AVI container format as output, you can get easy lossless joining of AVI files from MKVtoolnix GUI. https://forums.plex.tv/t/howto-joining-multi-part-movies-files-with-mkvtoolnix-gui/113211 (The instructions in this link boil down to: add the first AVI file, right click > append > choose second file, then click "start muxing").

This also works for subtitles, mp4 files, etc. It also has the advantage of an output file that is more reliable to play and stream on modern players.

|improve this answer|||||

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.