I have two *.avi files:

sequence1.avi
sequence2.avi

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
up vote 30 down vote accepted

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

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

$ mencoder -oac copy -ovc copy video1.avi video2.avi -o final.avi

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.

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:

#!/bin/bash
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...

  • 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.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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