Search code examples
videoffmpegyuv

How can I change only the pixel format with ffmpeg?


I have a prores encoded file with 422 pixel format and I'd like to convert it to 420 subsampling or such, to see how the file size changes. But seemingly, no pixel format except the default one is compatible. Here is the media info:

Duration: 00:00:20.02, start: 0.000000, bitrate: 253084 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le(bt709), 2048x1152, 200717 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 23976 tbn, 23976 tbc (default)
    Metadata:
      creation_time   : 2015-10-13 14:41:12
      handler_name    : Apple Alias Data Handler
      encoder         : Apple ProRes 422 (HQ)
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2015-10-13 14:41:12
      handler_name    : Apple Alias Data Handler
      reel_name       : A003R0D0
      timecode        : 167:47:51:21

I tried

ffmpeg -i raw_sample_0.mov -codec:v prores -pix_fmt (yuv420p10le | yuv420p | many others..) ~/Desktop/foo.mov

but none of those work. Is this because the codec simply does not support any other format? If so, how can I check which formats are supported and how can I losslessly convert to another format for which I can change the color sampling?


Solution

  • As the wiki article hints, there really is no other supported sampling scheme. One can find the permissive values with ffmpeg -h encoder=prores or similar for other codecs such as h264.