Encoding ProRes Manually on Windows

EDIT: See this updated article for an easier way to encode ProRes on Windows.

Apple's ProRes codec is a popular delivery format that many clients request. Until very recently, it was impossible to encode to ProRes in Windows which meant buying a Mac or trying to convince a client to accept a different format (such as the generally superior DNxHD). Now, with the free and open source video codec library FFmpeg, you can easily convert a large number of codecs into Apple ProRes on Windows, Linux, and Unix. Recently, a free program called Cinec was released for Windows. The program is extremely simple to use and quite flexible in it's ProRes encoding ability capable of 4444, 422 HQ, standard, LT, proxy, as well as alternative codecs. It's batch capable as well making it simple to convert a large number of files at once. With that said, I've run into occasional problems with the software encoding things weird and often end up manually performing the conversion. Below is a guide on performing this manual ProrRes encoding on a Windows computer.

Manually Encoding ProRes

Download the latest build of ffmpeg from the windows repository. Odds are your computer is 64-bit and you want the latest 64-bit static build. If you're not sure if your computer is 32 or 64 bit, download the 32 bit version.

Unzip the downloaded files. Create a folder on the root of a drive (for easy access) and call it "ffmpeg." Navigate to the unzipped folder and click on "bin." Inside are three .exe files, copy those (ctrl+c) and paste them (ctrl+v) into your newly created ffmpeg folder.

Start up the command prompt (click the windows key and type "cmd" and then press enter).

In the command prompt, you want to navigate to the drive with your ffmpeg folder. By default, you will be on the drive where windows is installed but in your users folder. To get to the root of the drive (usually called c:), you will need to type cd c:\ If you created the ffmpeg folder on this root drive then you're ready to go. If you, like me, have the ffmpeg folder on a different drive, simply type the name of the drive followed by a colon (for me, I enter r:).

Now we must navigate to the ffmpeg folder. If you created it in the root of your drive, you only need to type cd ffmpeg and your display should updated to read something like C:\ffmpeg>. You are now ready to enter the conversion command. Type the following to convert your file:

ffmpeg -i Path/To/File/ToBeConverted.mov -vcodec prores -profile:v 3 -an Path/To/New/ConvertedFile.mov

What We're Actually Doing

That's a bit confusing, so let's break it down with an imaginary file located in R:\"Va_Slims"\COLOR\VA_SLIMS_COLOR.mov

The first part of the command (ffmpeg) calls forth the ffmpeg encoder which is that exe file we pasted in our folder earlier. This is what is actually doing the encoding, the information afterwards is what instructs ffmpeg what to convert, to what and how to encode it, and where to store the output.

-i Path/To/File/ToBeConverted.mov is the file you will be encoding into ProRes. In the example of our file, the command would read ffmpeg -i R:/"Va Slims"/COLOR/VA_SLIMS.mov. Note how I have "Va Slims" in quotation marks. This is because the directory (called Va Slims) has a space in the name and requires the quotation marks to be referred to as a single file location (instead of breaking up the command).

The middle part of the command is the meat of what we're doing. I'm keeping this simple as there are a lot of variables which could be used here. What we want to focus on is telling ffmpeg to encode to ProRes and what kind of ProRes it should encode to.

First we instruct ffmpeg to encode to ProRes with the command as follows: -vcodec prores

Next, we need to define what flavor of ProRes we are encoding to. By default, the encoder has four options available: proxy, LT, normal (422), and HQ (422). Technically, there is a patch to encode to 4444 as well, but it's implementation is often buggy and for the purposes of this tutorial we will disregard the flavor. Each of these four options is defined by a numerical value. Proxy is 0, LT is 1, 422 is 2, and HQ is 3. The command to instruct ffmpeg to encode to the desired format is -profile:v # where we replace the # symbol with the desired output profile (0-3).

If we want to encode our imaginary file to ProRes HQ, our entire input would currently look like this: ffmpeg -i R:/"Va Slims"/COLOR/VA_SLIMS.mov -vcodec prores -profile:v 3

Now, we must define to what file we are outputting. The format is very similar to what we used to input except we are substituting the -i with -an. So, if we want to create a new file called VA_SLIMS_PRORES.mov in the same folder as before, our entire command would read:

ffmpeg -i R:/"Va Slims"/COLOR/VA_SLIMS.mov -vcodec prores -profile:v 3 -an R:/"Va Slims"/COLOR/VA_SLIMS_PRORES.mov

Now all you have to do is press enter and (assuming you typed everything correctly) ffmpeg will begin to churn away and generate your newly converted ProRes file.

Navigating the Command Prompt

There are some tips for navigating in the command prompt which you might find helpful. To navigate to a new folder below the root structure of your current location, type cd NewFolder. To navigate up, type cd ... If you want to paste a file name or any other text, do not use ctrl+v, instead right click and select paste. Navigating within your command is achieved with the left and right arrow keys, pressing up will recall the last command entered and will erase what you have currently input.

This simple process enables Windows users to deliver in the oft requested ProRes format simply and quickly (without having to invest in expensive Apple hardware. If you find this wall of text scary and difficult to follow, there's always the previously mentioned Cinec which offers free (now paid) and painless GUI-based ProRes encoding. For a free option, see my updated article.