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

5501
Trr1ppy

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

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

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

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

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

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

  • Процессор: Intel i7-4770k
  • Графический процессор: Nvidia GTX780 Ti
  • Оперативная память: 12 ГБ, 1600 МГц
1
Ваша ссылка не работает. почему бы не поставить код в вопросе? Кроме того, прочитали ли вы [Руководство по потоковой передаче FFmpeg] (https://trac.ffmpeg.org/wiki/StreamingGuide)? flolilolilo 6 лет назад 0
Кроме того, прочитайте [этот пост о режимах настройки x264] (https://superuser.com/questions/564402/explanation-of-x264-tune/564404#564404). flolilolilo 6 лет назад 0
Руководство по потоковой передаче FFmpegs говорит только об использовании-нулевой задержки и о посте режимов настройки x264, что недостаточно для того, чтобы я мог принять взвешенное решение, но если бы мне пришлось угадывать лучшее, я бы пошел с анимацией из чтения поста Trr1ppy 6 лет назад 0
Не пытаясь быть грубым, но так как вы говорите о святом Граале (** быстрый ** кодировщик, которому нужен только ** небольшой битрейт ** для ** визуально превосходных ** результатов), я не думаю, что вы понять важность (или ее отсутствие) параметра `-tune` в x264. Если использование `-tune PSNR` приведет к лучшим результатам с меньшим битрейтом за меньшее время, то я думаю, что все будут использовать (и продвигать) его, особенно если мы говорим об инструменте с открытым исходным кодом, который хорошо документирован и обсужден , flolilolilo 6 лет назад 0
Я думаю, что вы правы, я просто прыгнул, был бы эксперт по h264 с обширными знаниями о том, как параметры мелодии влияют на алгоритм кодирования. Я думаю, что параметры мелодии не очень хорошо обсуждаются для случая потоковой передачи, но, вероятно, потому что, как вы сказали, «отсутствие важности». Что я должен был посмотреть, так это то, что народные потоковые ПК используют для своего параметра мелодии, и я осмелюсь сказать, что это будет параметр -tune film, потому что они будут иметь высокие битрейты, я думаю, что в суммировании для низких битрейтов анимация настройки будет лучше всего уменьшить блокировку на низкокачественных потоках Trr1ppy 6 лет назад 0

2 ответа на вопрос

1
slhck

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

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

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

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

Это в целом верно, так как они намного больше.

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

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

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

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

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

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

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

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

О, и я должен добавить, что форум OBS, вероятно, является хорошим местом для вопросов, так как ваши вопросы очень специфичны для потокового игрового видео, которое является своего рода нишевым приложением. slhck 6 лет назад 1
Спасибо за ваш очень информативный ответ. Для пояснения. Если я увеличу B-кадры, кодировщик будет обрабатывать все дольше и дольше до того момента, когда я не смогу кодировать в реальном времени, а уменьшение B-кадров ускорит кодирование за счет качества. ? Кроме того, ключевые кадры связаны с B-кадрами, кажется, что ключевые кадры задают частоту B-кадров? Я хочу использовать как можно больше ресурсов компьютера, оставаясь при этом в режиме реального времени (очевидно, потому что я транслирую). Trr1ppy 6 лет назад 0
1) Да, хотя задержка не будет слишком большой. Чем меньше интервал ключевого кадра, тем меньше задержка кодирования при использовании большего количества B-кадров. 2) Нет, интервал ключевых кадров устанавливает интервал между I-кадрами. Параметр `bframes` в x264 определяет максимальное количество B-кадров подряд; если не использовать B-кадры, кодер заполнит его P-кадрами. Возможно, в вашем случае не используйте более 1-2 B-кадров (если вообще) и старайтесь сократить интервал между ключевыми кадрами (мое предположение: 3-4 секунды?). Трудно дать точный ответ, вам действительно нужно проверить полученное качество. slhck 6 лет назад 0
-1
Trr1ppy

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

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

Похожие вопросы