Three color metadata fields that have to match
Every video has three color metadata fields and they have to be consistent for playback to be accurate.
- color_primaries — the chromaticity of the RGB primaries (which red, green, blue does the camera think it's capturing?). BT.709 = HD/sRGB. BT.2020 = UHD/HDR.
- color_transfer — the gamma curve. BT.709 = SDR. PQ (smpte2084) = HDR10. HLG (arib-std-b67) = broadcast HDR.
- colorspace — the YUV→RGB matrix. BT.709 SDR. BT.2020nc UHD.
The HDR trap
If you encode an HDR source and FFmpeg doesn't write the metadata, players default to BT.709 SDR — your beautiful HDR clip looks washed-out gray. Always tag explicitly when working with HDR.