I am attempting to encode "ProRes 4444" movies with ffmpeg. Some research led me to the "prores_ks" encoder, which is the only one of ffmpeg's prores encoders that supports "4444".

I used this command to test it out (input excluded):

-c:v prores_ks -f mov -profile:v 4444 test.mov

This produces a ProRes 4444 movie. However, the colors appear darker than the original input. After some research I came upon this option:

-vf colormatrix=bt601:bt709

Adding this filter seems to fix the problem. However, the file size is for some reason considerably bigger. Also, I do not like the idea that a filter has to be performed during this encoding, as I want the highest possible quality. Does anyone know of a way to overcome this "color shift" without a video filter?

  • 1
    colormatrix filter operates in 8bit only, and you shouldn't use it anyway.
    – user12174
    Feb 19 '16 at 9:50
  • Also what are input properties, like what colorspace?
    – user12174
    Feb 19 '16 at 17:47
  • The input is a PNG sequence. Feb 29 '16 at 22:31
  • What bit depth, could you upload one image somewhere?
    – user12174
    Mar 1 '16 at 8:44
  • I've tried both 8 and 16 bit, out of After Effects. Here's a PNG and a MOV made with ffmpeg, using command ffmpeg -r 24 -i colorbars_8bit.png -c:v prores_ks -profile:v 4444 colorbars_prores_ks.mov: file.io/SeKH8I Mar 1 '16 at 17:15

I believe the problem lies in how FFMPEG does the RGB->YUV conversion by default. This option specifies the use of the bt709 color space for the conversion, instead of the default of bt601. This fixes it for me - though please let me know if I'm doing something bad here!

-vf scale=out_color_matrix=bt709
  • 709 is default for HD, 601 for SD.
    – Gyan
    Mar 24 '16 at 16:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.