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

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

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

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

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

Кроме того, есть ли какие-либо другие опции x264, которые могли бы быть полезны для моей трансляции, но которые не включены в OBS?

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

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

  • ПРОЦЕССОР:Intel i7-4770k
  • Графический процессор:Nvidia GTX780 Ti
  • БАРАН:12 ГБ, 1600 МГц

решение1

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

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

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

Я обеспокоен тем, что большее количество опорных кадров увеличит мой битрейт.

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

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

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

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

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

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

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

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

Теоретически вы можете закодировать несколько исходных потоков, затем закодировать их с разными настройками и пропустить через полнофункциональный анализатор качества видео, напримерVQMTилиВМАФ. Это даст вам оценку качества кодов. Но я полагаю, что в вашем случае достаточно и визуального осмотра результатов.

решение2

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

Tune animation предназначена для cel-based (flat) анимации. Не подходит для потоковой передачи игр.

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

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

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

решение3

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

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

Связанный контент