First, if not yet done, download ffmpeg - I went for the latest Release Build (3.4.1), Windows 64-bit, Static. Once the zip files has downloaded, extract the contents somewhere (Downloads folder works) - note the zip folder contains a directory, which contains everything else, so it’s less confusing if you extract directly into Downloads, rather than the subdirectory that the extractor will suggest!..
Our video camera records as MPEG-2 Program Stream files, which are a little bulky and are capped at just under 2GB (about 49mins long) - longer recordings are therefore split into multiple files. Fortunately, according to the ffmpeg faq, MPEG-2 PS files can just be concatenated together using the huble
On the other hand, the DSLR records as QuickTime .mov files, which are capped at 30mins (about 2.5GB) - longer recordings again get split into multiple files, but I don’t thin kthe files can just be concatenated together - however
ffmpeg can do it for us with the
If you want to, confirm the format that a file is with:
C:\Users\Dave>cd Downloads\ffmpeg-3.4.1-win64-static\bin C:\....\bin>ffprobe -hide_banner -show_format "C:\Users\Dave\Desktop\Birdsong\1st Dress\M2U00032.MPG"
[FORMAT] section, look for
format_long_name - MPEG-PS files can be concatenated with
copy, QuickTime / MOV (and other format) files can be concatenated with the
Note: complete filenames can be easily inserted into the Command Prompt by dragging the file from a Directory window and dropping on the Command window!..
If necessary, concatenate files with (file paths abbreviated for clarity!):
C:\Users\Dave>copy /b "....\M2U00032.MPG" + "....\M2U00033.MPG" "....\First Half.MPG"
+ between the files that should be concatenated together - more that two files is possible at once - the last parameter is the output file name. And note the /b at the beginning - this tells
copy that its copying binary files, and therefore shouldn’t stop when it finds a CTRL-Z character (which
copy considers an end-of-file character in an ASCII file - see here)
Finally, convert MPG files to mp4 files with:
C:\Users\Dave>cd Downloads\ffmpeg-3.4.1-win64-static\bin C:\....\bin>ffmpeg.exe -i "....\First Half.MPG" "....\First Half.mp4"
Note: ffmpeg will guess file types from the extensions, and the default settings for outputting mp4 are: video stream as h264 (High), audio stream as AAC - which generally works well! Video conversion seems to run at about 3x speed on my work desktop.
If it looks like the videos might need de-interlacing (our camera does!), try this instead (found in the ffmpeg FAQ, here) - note the additional flags between the input and output file names:
C:\....\bin>ffmpeg.exe -i "....\First Half.MPG" -flags +ilme+ildct "....\First Half.mp4"
You can set a start time and a duration with the
-t flags, before the
-i input file, like so:
C:\....\bin>ffmpeg.exe -ss 0:01:00 -t 1:06:00 -i "....\First Half.MPG" -flags +ilme+ildct "....\First Night - First Half.mp4"
If the files arean’t MPEG-PS, you can use a filter in ffmpeg to concanenate the video streams together - might cause a slight jump if the files don’t link up perfectly.
C:\....\bin>ffmpeg -i "....\DSC_0001.MOV" -i "....\DSC_0002.MOV" -filter_complex concat=n=2:v=1:a=1 "....\First Half.mp4"
Only runs at about 0.7x speed on my work desktop. The above works for two input files into one output file - I think if you want three inputs you just add another
-i "....\xxxxx.MOV" input, and change the filter settings to
The command prompt will let you run multiple commands on one line using
& to link them together (or
&& if you only want to do the second command if the first one exits sucessfully) - see here - like this:
C:\....\bin>ffmpeg.exe -ss 0:01:00 -t 1:06:00 -i "...\First Half.MPG" -flags +ilme+ildct "....\First Night - First Half.mp4" & ffmpeg.exe -ss 1:27:00 -t 0:48:00 -i "....\Second Half.MPG" -flags +ilme+ildct "....\First Night - Second Half.mp4"