FFMPEG is probably a better tool for the job, if you are prepared to deal with the command line. Install ffmpeg from the packages found here. These are all ready-built and should have all the included libraries you need.
Once you've installed ffmpeg you will need to run it from the command line. Since there's different ways of doing that depending on your platform, the one safe bet is that if you drag the ffmpeg icon into the command line window you should get the path to the ffmpeg executable auto-filled for you. Next you type out a command like this:
<ffmpeg executable path> -r 60 -i <input path> -preset ultrafast -crf 0 -r 30 -c:a copy <output path.mp4>
for a lossless mp4 file or
<ffmpeg executable path> -r 60 -i <input path> c:v prores -profile:v 3 -r 30 -c:a copy <output path.mov>
for a prores encoded quicktime file (ffmpeg will encode prores on Windows and Linux, but whether ProRes is readable depends on what software you're editing on. Alternatives are DNxHD/DNxHR and Cineform, but that's beyond the scope of this answer).
In both instances the <ffmpeg executable path>
, <input path>
and <output path.mp4>
means the path to the respective files, i.e. what you get when you drag them into the terminal. So to fill out the path to the input file, just drag it into the terminal. Since the output file doesn't exist, copy the input file and change the name and extension to whatever you want. On Windows it will be something like "c:\users\stib\folder\another folder\movie1.mp4"
on a mac it will be /Users/stib/folder/another\ folder/movie1.mp4
Linux will be similar to mac (though the home folder will vary depending on your distro. But anyway…).
The first example use h.264 compression with the Constant Rate Factor -crf
(inverse of quality) set to 0
or lossless. Since you're not looking for small file sizes the preset is set to ultrafast and the audio codec -c:a
is set to copy (this is assuming you're using an mp4 as input) so that the audio will not be re-encoded.
The second uses prores compression with the -profile:v 3
setting it to ProRes HQ, a very solid codec for editing work on Macs or Windows machines using Adobe Premiere. You could change this to Avid DNxHD or other codecs of your choice, with ffmpeg there are literally hundreds to choose from.
In both examples I changed the video frame rate using -r 30
, this will drop input frames to output a constant 30fps. Since your input is 59.94fps.
I also used -r 60
before the -i
input flag to force ffmpeg to treat the input file as 60fps (although it doesn't add or remove frames, just changes the way they are interpreted). You could instead change your output to 29.97 fps by using -r 30000/1001
instead of -r 30
for the output, and not bother putting a -r
rate flag before the input.
Applying this to a whole folder of files involves using the shell. How you do that depends on your OS.
on a Mac or Linux machine, here's one way
cd "/path/to/my folder of media/"
mkdir "30FPS_converted"
for i in *.mov; do
ffmpeg -i $i <ffmpeg options here> "./30FPS_converted/${i/mov/mp4};"
done
- change directory to the folder using the
cd
command, e.g. cd "/Users/stib/my media/folder1"
once again, you can drag the folder onto the terminal window.
- Create a new directory for your output files with the
mkdir
command (or do it in finder / file browser of your choice.
- create a loop with the contents of the folder using the
for
command, and use that to provide the input for the ffmpeg command. The command above creates a list of all the files with the suffix ".mov", creates a variable $i
and every time the loop goes round it changes the value of $i
to the next file in the list. The ${i/mov/mp4}
is called brace substitution. It substitutes the letters "mov" in the value of $i with the letters "mp4"
On Windows here's how you'd do it with Powershell (you could do it it with batch scripting, but I refuse to learn batch scripting):
set-location "c:\Users\me\my media files\"
new-item "30FPS_converted" -type directory
get-childItem*.mov | foreach {
ffmpeg -i $_ <ffmpeg options here> (".\30FPS_converted" + $_.name.replace("mov", "mp4))}
- change directory to the folder using the
Set-Location
command (though usually cd
works too), e.g. Set-Location "C:\Users\stib\my media\folder1"
once again, you can drag the folder onto the terminal window.
- make a new directory using the new-item command (mkdir usually works too). In the example above the path for the output folder is
.
(a full stop), this means "the current directory"
- list the files in the folder (
get-childItem
, though usually ls
works too) that end with the suffix you're after, and pipe |
the output to a foreach
loop. Inside that loop the variable $_
takes on the value of the file objects in the list one by one. Then use the name.replace()
function to create the appropriate output name, and append that to the directory name.
Obviously if your source files aren't .movs you change the .mov bits in the command to whatever you've got, and the same for the output file extension.
ffmpeg -i input.mp4 -preset ultrafast -crf 0 -r:v 30 -c:a copy output.mp4
will do a lossless h.264 encode of your footage at 25fps. You could also use another codec, h.264 can be dodgy for editing. For example prores:ffmpeg -i input.mp4 -c:v prores -profile:v 3 -c:a pcm_s16le -r:v 30 output.mov
.