Превращаем SDR монитор в псевдо-HDR в видеоплеере mpv

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В этом посте разбираемся, как заставить обычный (но яркий) SDR монитор показывать HDR видео с максимальным сохранением широкого диапазона яркости и цвета

Установка

Подойдёт как последняя на данный момент стабильная версия mpv (0.36), так и nightly/git сборки. Я рекомендую использовать вторые, так как в них есть последние исправления и улучшения для HDR видео, а также некоторые новые параметры конфигурации, которые могут Вам понадобиться.

Вот официальная страница установки. Для Windows рекомендую ставить git-сборки от shinchiro (x64, x64 v3), для macOS установить из Homebrew, а для Linux взять из Вашего репозитория. Если Вы сами компилируете приложение с Git, не забудьте до этого поставить библиотеку libplacebo, открывающую доступ к новым алгоритмам внутри плеера. Например, на Arch Linux можно сначала установить libplacebo-git, а затем mpv-git из AUR.

Настройка

В mpv параметры можно применять двумя путями - через консольные аргументы при запуске, либо же через файл конфигурации mpv.conf. Второй способ более удобен, так как позволяет легко сохранять настройки. Сам файл необходимо создать по следующему пути:

Windows:

%appdata%\mpv\mpv.conf

macOS/Linux:

~/.config/mpv/mpv.conf

У плеера очень подробное руководство пользования с описание всех параметров, но в этом посте я ограничусь лишь теми, что необходимы для нашей задачи. В то же время, я очень рекомендую прочитать это руководство для дальнейшей самостоятельной настройки.

По умолчанию mpv считает, что у нас обычный SDR монитор с яркостью в 203 нита. Если у Вашего монитора более высокие характеристики, их можно указать в файле конфигурации, который mpv автоматически применит при следующем запуске.

Яркость монитора, основная настройка для псевдо-HDR режима. Здесь 400 нит - не забудьте перед просмотром поднять яркость до этого уроня:

target-peak=400

Контрастность монитора. Здесь 1000:1 - это значение будет использоваться для компенсации точки чёрного:

target-contrast=1000

Передающая кривая (гамма) монитора. Здесь sRGB:

target-trc=srgb

Цветовой охват монитора. mpv может использовать весь цветовой охват при конвертации HDR видео, что полезно, если у Вас, например, профессиональный монитор с охватом AdobeRGB. Здесь Rec. 709/sRGB:

target-prim=bt.709

Можно поставить на Adobe RGB или DCI-P3:

target-prim=adobe

target-prim=dci-p3

Параметрами выше мы указали, какой у нас дисплей. Теперь давайте укажем настройки конвертации HDR видео в наш псевдо-HDR.

Во-первых, укажем драйвер вывода. Я рекомендую использовать gpu-next, так как в нём доступны последние исправления и улучшения, а также некоторые новые настройки:

vo=gpu-next

Если приложение было скомпилировано без libplacebo, придётся ограничиться стандартным драйвером:

vo=gpu

Включим аппаратное декодирование видео:

hwdec=auto

Укажем оператор тонмэппинга для конвертации:

tone-mapping=mobius

Этот оператор нравится мне больше всего, так как максимально сохраняет информацию внутри диапазона яркости дисплея, и он же является рекомендацией разработчиков для такого случая, как у нас.

В качестве альтернативы можно попробовать

tone-mapping=spline

tone-mapping=bt.2446a

Оба доступны только в gpu-next, но могут превращать SDR контент в (псевдо-)HDR с помощью опцииinverse-tone-mapping

В mpv доступны и другие настройки, от синхронизации звука до цвета субтитров, поэтому я снова рекомендую прочитать руководство, чтобы настроить плеер под себя. В то же время надеюсь, что указанные в этом посте настройки станут для Вас хорошей отправной точкой

Получившийся mpv.conf (пример)

vo=gpu

hwdec=auto

target-peak=400

target-contrast=1000

target-trc=srgb

target-prim=bt.709

tone-mapping=mobius

На этом всё, спасибо, что прочитали!

Источник: https://habr.com/ru/articles/770570/


Интересные статьи

Интересные статьи

В этой статье я расскажу о настройке Zabbix-мониторинга российского одноплатного микрокомпьютера Repka Pi 3, разработанного НПО Рэйнбовсофт (Rainbowsoft) из Саратова. Помимо параметров, дост...
Современные бизнес приложения имеют сложную структуру, состоят из множества независимых компонентов, часто распределенных по разным узлам, контейнерам или виртуальным машинам. В связи с этим, поиск не...
Недавно увидел, как у одного пользователя в Телеге аватарка отображает текущее время. Решил, что хочу что-нибудь подобное, но делать такое в Телеге уже не интересно, пусть будет ВКонтакте.
Название модуля перекликается, но не говорит, конечно, о поддержке 5G мобильной связи, это всего лишь название более продвинутой модели производителя, по сравнению с предшественником Laur...
В этой статье я расскажу как использовать pinba совместно с clickhouse и grafana вместо pinba_engine и pinboard. На php-проекте pinba — пожалуй единственный надёжный способ понять, что происходи...