Codec Comparisons
Table of contents
Ffmpeg supports over 100 video codecs, but only a fraction of those are really worth a deeper dive.
We are going to focus on codecs that match one of the following conditions:
- Supported by common web browsers.
- Have good compression ratios with good color fidelity.
- Supported by common apps, e.g. Resolve, RV, AVID.
- Commonly requested as a delivery format by studios or clients.
Codecs reviewed
Codec Family | ffmpeg codec | Bit depth | Pixel format supported | Web Support | HDR |
---|---|---|---|---|---|
h264 | x264 | 8 10 | YUV-4:4:4 yuv-4:2:2 YUV-4:2:0 | All Browsers | HLG |
VP9 | libvpx-vp9 | 8 10 12 | yuv-4:2:0 yuv-4:2:2 yuv-4:4:4 rgb rgb-10 rgb-12 | All Browsers | Yes |
HEVC/H265 | libx265 | 8 10 12 | yuv-4:2:0 yuv-4:2:2 yuv-4:4:4 rgb rgb-10 rgb-12 | All browsers | Yes |
HEVC/H265 | hevc_videotoolbox | 8 10 | yuv-4:2:0 yuv-4:2:2 yuv-4:4:4 rgb rgb-10 rgb-12 | All browsers | Yes |
AV1 | libsvtav1 | 8 10 | yuv-4:2:0 | Chrome Firefox Edge | Yes |
Prores | prores_ks | 10 | yuv-4:4:4:4 yuv-4:4:4 yuv-4:2:2 | Safari | ? |
DNxHD | dnxhd | 8 10 | yuv-4:2:2 yuv-4:4:4 rgb | no | ? |
Mjpeg | mjpeg | 8 | yuv-4:2:2 yuv-4:4:4 | no | no |
OpenAPV | liboapv | 10 12 | yuv-4:4:4:4 yuv-4:4:4 yuv-4:2:2 | no | yes |
For a high level comparison we have encoded 4 sets of media using our recommended settings, all with the aim of getting the VMAF score > 98. libx264 libstvav1 and vp9 were all encoded 4:2:0 and DNxHD and Prores were at 10-bit 4:2:2.
For details on codec flags, and how we picked the parameters, do goto the page for each codec.
![]() |
![]() |
![]() |
![]() |
Uncompressed containers
Y4m is a terrific container for uncompressed media. It allows uncompressed raw YCrCb data to be stored with a simple header.
Uncompressed Codecs.
Ffmpeg has support for a small number of uncompressed codecs that are worth using for testing. We don’t recommend any of them for day-to-day use.
Codec | Description | Pix Fmt | Notes |
---|---|---|---|
v410 | 444 10-bit | yuv444p10le | |
v408 | 4444 8-bit with alpha | yuva444p | Quicktime compatible |
v308 | 444 8-bit packed | yuv444p | |
v210 | 422 10-bit | yuv422p10le | |
r210 | RGB 10-bit | ||
png | PNG inside a Quicktime, either 8 or 16-bit with or without alpha | rgb24 rgba rgb48be rgba64be pal8 gray ya8 gray16be ya16be monob |
Other codecs worth considering.
Below are other codecs that may be worth considering at some point.
Codec | Profile description | Pix Fmt | Notes |
---|---|---|---|
hap | HAP and HAPQ codec | rgba | HAP - Fast GPU decompression, at the expense of file-size |
LCEVC | Low Complexity Enhancement Video Coding |
See:
- https://blog.frame.io/2017/02/13/compare-50-intermediate-codecs/
See Also
- Another good reference for encoding options is here: https://trac.ffmpeg.org/wiki/Encode/VFX although the page is a little out of date.