FFmpeg added support for ProRes in october 2011 – which made my life a little easier. The added support for ProRes closed a big gap for me as I quite often get exports in ProRes and need to transcode it into something more lossy like H.264 for usage on the web.
FFmpegs support for ProRes will also lead VLC in supporting ProRes in their upcoming 1.2 release. Great!
(Update: It was later renamed to version 2.0 and was released in february 2012.)
A quick note on how to trancode to Apple ProRes (often denoted APCN) using a recent build of FFmpeg:
ffmpeg -i input.mov -vcodec prores -profile:v NUMBER output.mov
For different flavors of ProRes replace NUMBER with a number from zero to 3 where:
0 : ProRes422 (Proxy)
1 : ProRes422 (LT)
2 : ProRes422 (Normal)
3 : ProRes422 (HQ)
The following was taken from FFmbc’s wiki site:
The encoder behave differently based on 3 options:
-qscale < value > or -cqp < value >
Specify a fixed quantizer that will be used for every frame. This is a VBR encoding method.
If bitrate is not specified, the bitrate will be automatically chosen based on video resolution and will be similar to the reference encoder for the same profile.
-b < bitrate >
Specify a approximately constant bit rate to use during encoding.
444 encoding: add -pix_fmt yuv444p10 to your commandline options.
Update: ProRes 444 doesn’t seem to work, but people are working on a patch as learned from this thread:
I must admit I haven’t used the codec lately, but people write that Final Cut Pro often gives the warning that ProRes files made with FFmpeg, are not optimized for FCP. All that means is, that the file wasn’t compressed using FCP but the file should work fine.
If you use the ProRes encoder, you might want to read this blogpost by the author Kostya.