Video conversion using ffmpeg on Windows

3 minute read

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 copy command!..

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 concat filter

Format Check

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"

In the [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 concat filter.

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

Concatenate Files

If necessary, concatenate files with (file paths abbreviated for clarity!):

C:\Users\Dave>copy /b "....\M2U00032.MPG" + "....\M2U00033.MPG" "....\First Half.MPG"

Note the + 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)

Basic Conversion

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 -ss and -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"

Concat Filter

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 concat=n=3:v=1:a=1

Multiple Conversions

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"