Просто заинтересовался этим форматом x265 HEVC и попробовал его на потоковом видео BDMV 1920x1080i, одно закодированное с глубиной 8 бит, а другое — с глубиной 12 бит. В результате 8-битный выход был меньше. Оба выхода имеют разрешение 1280x720.
Интересно, почему это так.
Вот МедиаИнфо:
8 бит:
Частота кадров: 23,976 кадров в секунду
Цветовое пространство: ЮВ
Подвыборка цветности: 4:2:0
Битовая глубина: 8 бит
Библиотека записи: x265 1.9+54-291beccb6760:[Windows][GCC 5.3.0][64 бит] 8 бит+10 бит+12 бит
Настройки кодирования: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=2 / tu-inter-depth=2 / me=3 / subme=3 / merange =57 / rect / amp / max-merge = 3 /temporal-mvp / no-early-skip / rdpenalty=0 / no-tskip / no-tskip-fast / сильное внутреннее сглаживание / no-lossless / no-cu -без потерь/без ограничений-внутри/без-быстрого-внутри/открытая гоп/без временных слоев/чересстрочная развертка=0/keyint=250/min-keyint=23/scenecut=40/rc-lookahead=30/lookahead -slices=4/bframes=8/bframe-bias=0/b-adapt=2/ref=4/limit-refs=2/limit-modes/weightp/weightb/aq-mode=1/qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock / sao / no -sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1.40 / отношение = 1,30
12 бит: частота кадров: 23,976 кадров в секунду
Цветовое пространство: ЮВ
Подвыборка цветности: 4:2:0
Разрядность: 12 бит
Библиотека записи: x265 1.9+194-6d3849d648f0be5a:[Windows][GCC 5.3.0][64 bit] 12bit: KG7x [x265.ru]
Настройки кодирования: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=2 / tu-inter-depth=2 / me=3 / subme=3 / merange = 57 / rect / amp / max-merge = 3 /temporal-mvp / no-early-skip / recursion-skip / rdpenalty=0 / no-tskip / no-tskip-fast / сильное сглаживание внутри / без потерь / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=23 / scenecut=40 / rc-lookahead =30/lookahead-slices=4/bframes=8/bframe-bias=0/b-adapt=2/ref=4/limit-refs=2/limit-modes/weightp/weightb/aq-mode=1/qg -size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock =0:0 / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1,40 / pbratio=1,30
crf=18
rate-control создает файлы большего размера в 12-битном режиме. Если вы пытаетесь найти некоторые настройки кодирования, которые хорошо работают для некоторого контента, вы не должны предполагать, что один и тот же CRF с разной битовой глубиной будет одинаковым. (Либо один и тот же SSIM, либо одно и то же воспринимаемое визуальное качество).
Вы ничего не сказали о качестве или качестве в зависимости от размера файла. Предположительно, большие файлы также выглядят немного лучше, поскольку 12-битный x265 имеет примерно такое же качество на битрейт, как и 8-битный x265. (Я тестировал с 10 против 8, но не с 12).
CRF не является точной настройкой целевого качества. Поэтому, если вы хотите сравнить настройки, используйте 2pass с одинаковым битрейтом для обоих и посмотрите на качество. Используйте либо SSIM, либо, что предпочтительнее, визуальный осмотр человеком. (Некоторым людям нравится приостанавливать/масштабировать, но не делайте этого просто так. Некоторые виды артефактов/искажений заметны при воспроизведении видео, но многие гораздо менее заметны. Пауза/масштабирование помогает при проверке вашего визуального впечатления от " резкость» / «больше деталей», поэтому выясните, что произвело на вас такое впечатление, и, возможно, также другие вещи, на которые нужно обратить внимание, чтобы увидеть, можете ли вы все еще замечать их во время воспроизведения видео.)
Для реального кодирования, как только вы найдете настройки, которые вам нравятся, CRF великолепен, но он не годится для сравнения качества на битрейт различных настроек кодирования.
Для x265 все еще может быть некоторый выигрыш в эффективности сжатия, но он определенно меньше, если вообще существует. 10 или 12-битные могут выглядеть даже немного хуже. См. обсуждение doom9 , ссылка на которое предоставлена Майклом в комментарии. Я не следил за последними обсуждениями, поэтому я не уверен, каков текущий консенсус в отношении 10-битного x265 для 8-битного видео. Даже если есть небольшой выигрыш, он может не стоить потери скорости.
Это определенно далеко не коэффициент 12/8, как предлагают некоторые комментаторы, основываясь на «простой математике». Видеокодек с потерями, такой как h.265, не очень похож на простое сжатие без потерь, такое как ZIP.
x264 в целом выигрывает от работы в 10-битном режиме, даже если исходный источник 8-битный, как и конечный дисплей (но опять же, вы не должны ожидать, что один и тот же CRF будет давать тот же битрейт или то же качество при разная глубина). 8-битный h.265 имеет более точные векторы движения, чем 8-битный h.264, поэтому часть рассуждений не применима к x265.
Помните, что и h.264, и h.265 хранят информацию в видео в виде квантованных коэффициентов частотной области. С решеткой / rdoq он даже настраивает квантование, чтобы хорошо сжимать его с помощью конечного энтропийного кодера (например, CABAC в h.264), поэтому одно и то же количество битов может представлять один и тот же объем информации, независимо от того, имел ли энтропийный кодер 8- битовый или 12-битный ввод. 8-бит в каком-то смысле просто спидхак.
Больше битов означает, что вы можете приблизиться (меньшая ошибка), но при этом иметь некоторую ошибку. Таким образом, у кодировщика больше возможностей выбора между искажениями и битрейтом. Отчасти это может быть причиной того, что 10-битный x264 меньше страдает от артефактов «полосатости» в градиентах: у него больше выбора для представления коэффициента постоянного тока или небольших значений коэффициентов переменного тока.
Чем выше входная битовая глубина (для заданного выходного битрейта), тем больше битов кодер должен отбросить. Многие из этих дополнительных битов равны нулю, если исходное видео было 8-битным. (Кодирование с потерями уже отбрасывает много битов, например, от 12 бит на кадр на кадр (для субдискретизации цветности YUV 4: 2: 0 с 8-битными компонентами) до 0,15 бит / пиксель / кадр, и все еще выглядит довольно близко к визуально прозрачным, особенно при высоком разрешении, когда типичное видео содержит информацию, распределенную по большему количеству пикселей.)
Если вы собираетесь изменять масштаб, предположительно, переход на 10 или 12 бит перед масштабированием позволит масштабировать смешанные пиксели с меньшей потерей информации. (например, 10-битное значение может точно хранить среднее значение четырех 8-битных значений.)
Гьян
Адам Манн Про
58YtQ2H83m17838963l61BU07Y8622
Майкл Стейнберг
Майкл Стейнберг
Питер Кордес