ProRes support in FFmpeg – I love it!

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 gets exports in ProRes and needs to transcode it into something more lossy like H.264 for usage on the web.
FFmpegs support for ProRes will also lead VLC to 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 -an 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:
http://ffmpeg.org/pipermail/ffmpeg-user/2012-September/009521.html
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 while as the file should work fine.

If you use the ProRes encoder, you might want to read this blogpost by the author Kostya.

About these ads

15 thoughts on “ProRes support in FFmpeg – I love it!

    • In recent ffmpeg, you have to use ‘-profile:v’ instead of ‘-profile’.

      This means that you can also use ‘-profile:a’ for some audio codecs that support profiles, or even select individual streams: ‘-profile:0′ would select the first stream (be it video or audio), ‘-profile:v:0′ will select the first video stream, and so on.

      • Thanks for the info on the profiles Liam! Just a minor spelling mistake: It is -profile:v 0. without the space ffmpeg doesnt recognize the syntax of the arguments. You can also use short forms “-c:v prores” or “-c:a copy” for video and audio instead of -vcodec prores and -acodec copy.

      • Just grabbed a fresh build and both “-profile:v” and “-profile” works, but “-profile:v” seems more correct, so i’ve updated the post. Thanks.

  1. Pingback: ML RAW FFMPEG Windows workflow | EddsWEB

  2. thanks for this post, I know this is a late reply;) so when i try to encode via
    ffmpeg -i input.mov -vcodec prores -profile:v 3 -an output.mov I get an error saying “Unknown encoder ‘prores’ ”

    I have an actual linux running (ubuntu dream) .. any thoughts? thanks so much!

  3. That is not the FFmpeg version but your Ubuntu version. You need a newer version of FFmpeg. When you start FFmpeg, you can see the build date in the CLI. The build has to be from at least 2012, but a fresh build is better since there has been improvements recently.

  4. ffmpeg i get:

    built on Apr 5 2013 11:53:09 with gcc 4.6.3
    *** THIS PROGRAM IS DEPRECATED ***
    This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

    h m i m really lost here sorry, coming from sound i m a bit new to the video world.

    when i use winff instead of your command and use a preset I get this output:

    “[prores @ 0x8fde7e0] alpha channel not implemented. Update your Libav version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.”

    your help is very much appreciated!! thanks! kris

  5. Thank you very much, this opened my eye to that there is a very competent free option available for converting MTS2 to Prores.

  6. Hi,
    Nice post!

    One query though: I’ve tried to use profile 0 to encode with Proxy settings (just like in the post) but I got instead a bitrate equivalent to the Prores HQ.

    Also HQ is much higher than the specifications. Did you notice anything strange on this topic yet? Maybe the profiles map is not accurate?

    Here’s what I’ve used for a comparison:

    http://documentation.apple.com/en/finalcutpro/professionalformatsandworkflows/index.html#chapter=10%26section=4%26tasks=true

  7. FYI, you can now to do prores444 encoding with the most recent build of ffmpeg, not sure if the alpha remains in tact though… use this to define the encoder: -vcodec prores_ks -profile:v 4 -r 29.97
    filename.mov

    *Note that the numbers following “-r ” will be your playback frame rate.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s