Я хочу позначити відео як явно bt.601, а не "не вказано". Я знаю, що гравці зазвичай вибирають bt.601 за замовчуванням для відео розміром менше 1280 пікселів, але я хочу зробити це явним, що bt.601 - це правильна кольорова матриця для відео.
Важливим моментом є те, що bt601
для ffmpeg або libx264 не існує жодного варіанту, лише bt709 та деякі інші.
У мене є кілька відеороликів, які були зменшені з високої чіткості та зберігаються в bt.709, але вони не позначені належним чином. Тому коли я переглядаю відео, мені іноді доводиться вручну переключати програвач на bt.709 . Явно позначивши тег як bt.601, я повідомляю майбутнім глядачам (наприклад, собі), що це безумовно bt.601, а не неправильне теги bt.709, коли я дивлюся на нього mediainfo
.
Іншим випадком використання для цього було б, якщо ви збільшили масштаб відео на bt.601 до 1280 або вище, не роблячи перетворення кольорової матриці (використовуючи -vf colormatrix
), програвачі неправильно припустили бт.709, якби ви залишили інформацію про колір не вказаною.
colormatrix
Відеофільтр FFMpeg підтримує bt601
кольорову матрицю введення або виводу, але також не встановлює теги. (Оскільки він не має побічного ефекту від встановлення параметрів кольору ffmpeg, він відмовляється навіть працювати з src та dest, таким же, як -vf colormatrix=bt601:bt601
.)
ffmpg in -color_primaries bt709 -color_trc bt709 -colorspace bt709 out
буде позначати вихідне відео як використання bt.709 для yuv <-> rgb. Теги опиняються всередині самого відеопотоку, а не лише у контейнері (оскільки, мабуть, це специфічна для кодека річ, а не контейнер, принаймні для контейнерів mp4 та mkv).
наприклад mediainfo
вихід:
Complete name : out.mkv
...
Writing application : Lavf57.14.100
Writing library : Lavf57.14.100
Video
ID : 1
Format : AVC
...
Writing library : x264 core 148 r2638+4 afcf21c
Encoding settings : cabac=1 / ref=8 / ...
Language : English
Default : Yes
Forced : No
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Отже, bt.709 легко позначати. Проблема в тому, що я ніде не бачу bt.601. Чи є одне з інших іменів псевдонім для нього, чи дійсно немає способу його чітко вказати?
x264 --fullhelp output:
--colorprim <string> Specify color primaries ["undef"]
- undef, bt709, bt470m, bt470bg, smpte170m,
smpte240m, film, bt2020
--transfer <string> Specify transfer characteristics ["undef"]
- undef, bt709, bt470m, bt470bg, smpte170m,
smpte240m, linear, log100, log316,
iec61966-2-4, bt1361e, iec61966-2-1,
bt2020-10, bt2020-12
--colormatrix <string> Specify color matrix setting ["???"]
- undef, bt709, fcc, bt470bg, smpte170m,
smpte240m, GBR, YCgCo, bt2020nc, bt2020c
ffmpeg -h full
показує той самий набір опцій для своїх кольорових параметрів, який -c:v libx264
відеокодек ffmpeg передає x264. Чи є якийсь із цих псевдонімів для bt.601, або має чисельно еквівалентну кольорову матрицю?
-color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m
).