x264: какой -tune выбрать для лучшего качества живой трансляции без увеличения битрейта?

Вопрос или проблема

Я пытаюсь транслировать FPS-шутер с помощью OBS 20.0.1 с наименьшей возможной битрейтом, сохраняя при этом лучшее качество (т.е. меньше артефактов в виде блоков).

Меня беспокоит, что большее количество кадров-ссылок увеличит мой битрейт. Поскольку это стриминг с высоким движением, следует ли мне использовать -tune animation для улучшения декодирования? Или PSNR или SSIM будут более многообещающими кандидатами?

Есть ли лучший/другой способ протестировать, какой вариант -tune является наиболее подходящим, чем просто попробовать их с тестовыми потоками?

Также есть ли другие параметры x264, которые могут улучшить мой стрим, но которые не включены в OBS?

Моя настройка OBS:
Настройка OBS

Мое оборудование:

  • ЦП: Intel i7-4770k
  • ГП: Nvidia GTX780 Ti
  • ОП: 12GB, 1600MHz

Я пытаюсь транслировать FPS-шутер с помощью OBS 20.0.1 с наименьшей возможной битрейтом, сохраняя при этом лучшее качество (т.е. меньше артефактов в виде блоков).

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

Невозможно оптимизировать все эти параметры (скорость, качество, битрейт) одновременно, поэтому x264 (и другие кодировщики) предлагают способ выбора предустановки скорости (например, от ultrafast до veryslow в x264). Эти предустановки включают/выключают определенные опции, которые оптимизируют качество сжатия или минимизируют время кодирования.

Меня беспокоит, что большее количество кадров-ссылок увеличит мой битрейт

В общем, это правда, так как они гораздо больше.

Поскольку это стриминг с высоким движением, следует ли мне использовать -tune animation для улучшения декодирования? Или PSNR или SSIM будут более многообещающими кандидатами?

Посмотрите этот другой пост, где объяснены режимы настройки.

В вашем конкретном случае прямой трансляции с низкой задержкой, с одним проходом кодирования, нет смысла использовать film. Это для сохранения (зернистых) деталей.

Ваши опасения по поводу артефактов при низком битрейте понятны, но предустановка animation не имеет смысла для прямой трансляции, так как она также увеличит количество B-кадров, которые вы в любом случае хотите установить на 0 (или на низкое число), чтобы обеспечить быстрое кодирование. B-кадры требуют кодирования предыдущих и следующих кадров, что означает, что кодировщик/декодировщик должен хранить больший буфер для этих кадров. Чем больше B-кадров, тем лучше качество, но с увеличением времени кодирования.

Режимы psnr и ssim тоже не полезны; они используются только во время разработки/оптимизации кодировщика и могут фактически привести к ухудшению субъективного качества.

Возможно, zerolatency лучше подходит для вашего случая использования?

Есть ли лучший/другой способ протестировать, какой вариант -tune является наиболее подходящим, чем просто попробовать их с тестовыми потоками?

Теоретически вы могли бы закодировать несколько оригинальных потоков, затем закодировать их с разными настройками и запустить через полный референсный анализатор качества видео, такой как VQMT или VMAF. Они дадут вам оценку качества для закодированных материалов. Но я думаю, что визуального осмотра результатов будет достаточно в вашем случае.

Настройки tune не предназначены для высокой/низкой качества, а для оптимизации внешнего вида для данного типа исходника.

Настройка анимации подходит для целлюлозной (плоской) анимации. Не подходит для потоковой передачи игр.

Настройка film предназначена для видео или фильмов с живым действием, но CGI с достаточным уровнем реалистичности (например, тонкие текстуры) также может извлечь выгоду из этого. Нет проблем попробовать.

Другие настройки tune, вероятно, не подойдут. Самое важное — использовать предустановку “более быстро” (или лучше), так как все более низкие предустановки качества значительно ухудшают качество. Также важно обеспечить достаточный битрейт. Обратите внимание, что x264 будет использовать довольно много ресурсов ЦП, так что будьте готовы к этому. Аппаратный кодировщик, такой как NVENC, может помочь в этой степени, но с немного более низким качеством видео.

Нет смысла настраивать для низкой задержки, если ваша платформа не требует этого, так как это не нужно для трансляции вашей игры (т.е. зрителей не затронет, если будет задержка в доли секунды поверх уже имеющихся нескольких секунд).

Параметр tune не имеет значительного влияния на качество потока, что коррелирует с отсутствием обсуждений и/или упоминаний его опций в руководствах. animation может использоваться с потоками низкого битрейта для увеличения декодирования, а film может использоваться с потоками высокого битрейта, чтобы сохранить поток как можно более верным исходнику. Хотя я не уверен, насколько эффективен процесс декодирования или его отсутствие.

PSNR и SSIM предназначены для тестирования и сравнительных целей между методами управления битрейтом (CBR, ABR, VBR, CRF).

Ответ или решение

Настройка x264 для Высококачественного Прямого Эфира Игр при Низкой Битрейте

При стриминге FPS-игр через OBS (Open Broadcaster Software), использование кодека x264 требует тщательной настройки для достижения оптимального качества изображения, особенно при ограничениях по битрейту. Рассмотрим наиболее эффективные параметры настройки, включая использование флага -tune, и дополнительные опции для улучшения качества.

1. Выбор соответствующего параметра -tune

В контексте стриминга игр следует учитывать, что различные настройки -tune оптимизируют кодирование для специфических типов видео. Для вашего случая:

  • -tune animation не является подходящим для игрового стриминга, так как данный параметр ориентирован на анимацию с плоскими цветами и может снизить общую производительность за счет увеличения числа B-кадров. Это увеличивает нагрузку на процессор и объем используемой памяти, что может привести к усилению задержек.

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

  • -tune zerolatency представляет собой оптимальный выбор для стриминга в реальном времени, так как уменьшает задержку, что может быть критичным для FPS-игр, где моментальная реакция важна. Однако этот параметр не всегда гарантирует лучшие визуальные результаты при низком битрейте.

2. Повышение качества при фиксированной битрейте

Чтобы улучшить качество изображения при низком битрейте, необходимо сбалансированное сочетание настроек:

  • Предустановка скорости (Preset): Используйте параметр veryslow или slower, если позволяет производительность вашего процессора. На вашем Intel i7-4770k можно попробовать настраивать усиление четкости и улучшение качества с помощью более медленных предустановок.

  • Выбор числа B-кадров: Рекомендуется установить значение B-кадров в 0 или 1, чтобы уменьшить задержку при кодировании, что является критически важным для онлайн-игр.

  • Настройка битрейта: Выберите целевой битрейт, который адекватно соответствует вашей сети, например, 3000-6000 кбит/с для 720p и 5000-9000 кбит/с для 1080p.

3. Дополнительные параметры x264

Хотя OBS может не предлагать полный список опций x264, вы можете вручную настроить некоторые параметры в конфигурации:

  • keyint: Установите значение на 2 или 4 секунды (если используете фиксированный интервал для ключевых кадров), чтобы уменьшить задержку.

  • ref: Установите на 1, чтобы снизить использование памяти и уменьшить задержки.

  • Подбор значений subme: Находятся в диапазоне от 0 до 10. Рекомендуется начать с 4 и адаптировать в зависимости от нагрузки на процессор и качества видео.

4. Тестирование и верификация качества

Для проверки выбранных настроек рекомендуется:

  • Провести тестовые стримы с различными адаптациями настроек x264 и визуально оценить полученные видео.

  • Использовать инструменты анализа качества, такие как VMAF, чтобы проанализировать относительное качество разных стримов.

Заключение

Настройка x264 для стриминга FPS-игр при низкой битрейте требует баланса между качеством и производительностью. Используйте настройки zerolatency или film в сочетании с медленными предустановками кодирования, при этом тщательно подбирайте битрейт и количество B-кадров. Также проводите регулярные тесты, чтобы убедиться, что финальный результат соответствует вашим ожиданиям.

Оцените материал
Добавить комментарий

Капча загружается...