[FFmpeg-user] Requesting colormatrix advice
markfilipak.imdb at gmail.com
markfilipak.imdb at gmail.com
Mon Nov 6 05:42:13 EET 2023
Hello All,
I have a 1990s TV show -- called 'SOURCE' here -- made by Paramount. The show was renowned for its
production values. It's on Blu-ray from Paramount. The Blu-ray was made in 2012 (may be a clue to a
colorspace variant used).
The Question:
Do you have any advice regarding colormatrix?
The Situation:
TARGET videos look saturated, especially in red. When I COLOR_GRADE [note 1], detail otherwise
saturated become visible. So, SOURCE cannot be saturated. It must be happening _during_ encoding.
However, ffprobe says the SOURCE colormatrix is unknown [note 2].
[note 1]
set MAP = -map 0:v -map 0:a
set SOFT_BOB = separatefields,setdar=16/9
set COLOR_GRADE = colorcorrect=saturation=0.8:rh=-0.05
set ENCODE = -c:v libx265 -x265-params crf=18 -c:a copy
ffmpeg -i "%SOURCE%" %MAP% -vf %SOFT_BOB%,%COLOR_GRADE% %ENCODE% -sn "%TARGET%"
[note 2]
pix_fmt=yuv420p
level=41
color_range=unknown
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
field_order=progressive
I assume that since colormatrix is unknown to ffprobe, it's unknown to ffmpeg. If so, then ffmpeg
has no choice but to assume it's BT709 and to mark it 'BT709' without changing any pixels, eh?
But obviously, it isn't BT709 because it becomes saturated. So what is it? And what should I try?
Color is a confusing wilderness to me. For example,
'ffmpeg ... -vf colormatrix=bt601:bt709 ...'
only sets one of the settings:
'Stream #0:0: Video: hevc (hev1 / 0x31766568), yuv420p(bt709/unknown/unknown, progressive), ...'
Wow. Which one is now bt709 in the output and which two are still unknown? I'd like to set all 3 to
BT601 in the SOURCE and BT709 in the TARGET but there doesn't seem to be a way to do that. Or am I
just missing it?
x265 has presets. –colorprim –transfer –colormatrix –range –chromaloc
BT601_525 -> smpte170m smpte170m smpte170m limited 0
BT601_626 -> bt470bg smpte170m bt470bg limited 0
BT709_YCC -> bt709 bt709 bt709 limited 0
BT709_RGB -> bt709 bt709 gbr limited
BT2020_YCC_NCL -> bt2020 bt2020-10 bt709 limited 2
BT2020_RGB -> bt2020 smpte2084 bt2020nc limited
BT2100_HLG_YCC -> bt2020 arib-std-b67 bt2020nc limited 2
BT2100_HLG_RGB -> bt2020 arib-std-b67 gbr limited
FR709_RGB -> bt709 bt709 gbr full
FR2020_RGB -> bt2020 bt2020-10 gbr full
FRP3D65_YCC -> smpte432 bt709 smpte170m full 1
It would be nice if ffmpeg used them, too.
Thanks for any advice for relieving a headache
--Mark.
More information about the ffmpeg-user
mailing list