Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have two high-quality mp4 files, which are of two parts of the same show.

I want to merge them together into 1 file, and I usually use VirtualDub to merge my files... But it doesn't seem to support mp4.

What alternatives are available (especially ones that don't require re-encoding)?

share|improve this question

8 Answers 8

up vote 25 down vote accepted

I usually use VirtualDub to merge my files, but it doesn't seem to support mp4. So what alternatives are there?

Avidemux. It's just like VirtualDub, only with more formats supported and built-in codecs and filters. I always use it in preference; it joins AVC+AAC.MP4 files (without recoding) fine for me.

To join them in AviDemux:

  1. File -> Open -> Select File
  2. File -> Append -> Select File
  3. Set all to Copy
  4. File -> Save -> FileName
  5. Wait..

According to AViDemux forums, this join process is lossless (http://www.avidemux.org/smf/index.php?topic=9467.0)

share|improve this answer
    
yeah, it seems to do excellent with keeping audio in sync with video whereas the other persons answers to this question are questionable on that IMHO. –  djangofan Nov 12 '10 at 23:39
    
I tried using Avidemux to join two files together but the audio became out of sync. –  GiddyUpHorsey Jul 2 '12 at 13:56
    
You can get sync problems when the amount of audio material available doesn't match the length of video frames, or there's any stream corruption. You may be able to fix this up with the 'stream fix' features of VideoRedo or ProjectX. –  bobince Jul 2 '12 at 21:38
    
I just tried this (H264 video) and it lost frames at the joins unless they were I-frames, as somewhat described here. Useless. –  Christopher Galpin Jun 11 '13 at 1:09
1  
But this method worked: superuser.com/a/255566/1780 Hooray! –  Christopher Galpin Jun 11 '13 at 1:15

You can do this with ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

This doesn't re-encode anything, it places them in a new transport stream container, which makes them more easy to concatenate, and then concatenates them back into an MP4. If output.mp4 already exists, the command will fail. The version above uses named pipes, if you're on a system that doesn't support those you'd have to use intermediate files (like windows):

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4
share|improve this answer

YAMB along with MP4BOX is a good option.
Download both and unzip them (no installation needed and together they're about 5MB), in YAMB choose Settings and set the folder path of MP4box.
To join mp4 files choose Editing > Click to Join supported...

share|improve this answer
1  
Seems like the best solution, keeping the .mp4 container format which would seem the more attractive option to the author ^^ –  Oskar Duveborn Sep 19 '09 at 13:44
    
After difficulty, I used this config: MP4Box_path=E:\Software\Video Editing\Yamb-2.1.0.0_beta2\MP4Box\MP4Box.exe in an attempt to merge 4 500MB MP4 files generated from AVIDemux . It didn't work. The program just sat there for 45 minutes doing nothing until I finally gave up. –  djangofan Nov 27 '09 at 23:43
    
i had trouble using this method because of audio sync problems. it was a nightmare... not trying it again. –  djangofan Nov 12 '10 at 23:37

SUPER © (Simplified Universal Player Encoder & Renderer) provides the following additional Output Process:

Any supported input Multimedia file can be processed:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 

of course, MP4 is a supported format.

SUPER © is freeware.

share|improve this answer
3  
Its user interface is the most horrible I've seen in my life. I'm not kidding, it's just horrible. I emphasize it once more: I can't name a worse interface, I'm serious about it, I've never seen anything below the "SUPER threshold". –  Camilo Martin Jan 12 '12 at 14:48

Try using the Matroska video container.

Firstly, you need mkvtoolnix. Download and install it, then you need to fire up mkvmerge GUI (unless you like command-line tools, which is fine by me - although you might want to look at the file linking section of the mkvmerge documentation).

Add your first file by clicking "add". Then, click on "append", and open your second file. Set the output file, hit "Start muxing" at the bottom, and away you go!

If the container is unsuitable for your needs, you can reencode it, or try to convert it to some other format... Although MKV is a very lovely container!

share|improve this answer
    
it has to be muxed? i cant be joined without muxing? –  djangofan Nov 27 '09 at 23:45
    
Well, if you're using an MKV container, technically you are remuxing it. Try it, there is no real time penalty... –  Breakthrough Dec 7 '09 at 2:09

Concat demuxer

The concat demuxer was added to ffmpeg 1.1. If your version of ffmpeg is to old, get the newest static binary from here: http://www.ffmpeg.org/download.html

Instructions

Create a file mylist.txt with all the files you want to have concatenated in the following form (Lines starting with a dash are ignored):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Note that these can be either relative or absolute paths. Then you can encode your files with:

ffmpeg -f concat -i mylist.txt -c copy output

It is possible to generate this list file with a bash for loop, or using printf. Either one of the following would generate a list file containing every *.wav in the working directory:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Source: ffmpeg wiki

share|improve this answer

Another solution is Open Video Joiner. It also does transition effects.

enter image description here

share|improve this answer
    
It's a shareware though. and for 30$ it's not cheap just to merge video files –  Eran Sep 19 '09 at 12:10
    
It was said to be freeware. Sorry if I was misled. –  harrymc Sep 19 '09 at 15:51

If you can play them on your system / have a codec installed, Windows Movie Maker may the quickest (and free) way to join the two files. You can then use Virtualdub to convert to a different format.

share|improve this answer
    
Audacity seems to be for audio files. This is a video file. –  Paolo Bergantino Sep 18 '09 at 22:40
    
So sorry, I mis-read, just saw the MP part and my brain though audacity. –  William Hilsum Sep 18 '09 at 23:01
    
Editing answer... –  William Hilsum Sep 18 '09 at 23:02
    
AFAIK, Movie Maker doesn't support mp4 and converting to a different format means lose of quality which the question specifies as unwanted. –  Eran Sep 18 '09 at 23:16
    
I tried MovieMaker on windows7 and the audio becomes out of sync when joining MP4 files into a WMV. This option wont work. –  djangofan Nov 27 '09 at 23:10

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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