Найти в Дзене
Roundhouse kick

Можно ли стримить с AMD?

Это статья, в которой я ставлю эксперимент - можно ли стримить на Твич с помощью карты от AMD и сравним это с кодировкой на процессоре. Кодировка на процессоре (x264) Простой вариант, всего три настройки и хорошее качество. Управление битрейтом - каждый знает что для Твича должен быть CBR, который держит битрейт на постоянном уровне. Битрейт - ширина канала, которая выделяется для стрима, для Твича максимум 6000 Интервал ключевых кадров - время в секундах, после которого следует вставлять ключевой кадр (I-Frame), для Твича - 2 секунды Предустановка использования ЦП - то, сколько процессорного времени будет отнимать OBS для кодирования, чем ниже параметр по списку, тем больше используется процессор и при этом лучше качество Профиль - профиль h.264 Профиль high выглядит лучше main и имеет алгоритмы, которые позволяют лучше сжимать видео. Поэтому я остановился на нём. Настройка - специальные настройки кодировщика, я оставил пустым Настройка x264 - позволяет шаманить с кодировщиком с по
Оглавление

Это статья, в которой я ставлю эксперимент - можно ли стримить на Твич с помощью карты от AMD и сравним это с кодировкой на процессоре.

Кодировка на процессоре (x264)

Простой вариант, всего три настройки и хорошее качество.

Управление битрейтом - каждый знает что для Твича должен быть CBR, который держит битрейт на постоянном уровне.

Битрейт - ширина канала, которая выделяется для стрима, для Твича максимум 6000

Интервал ключевых кадров - время в секундах, после которого следует вставлять ключевой кадр (I-Frame), для Твича - 2 секунды

Предустановка использования ЦП - то, сколько процессорного времени будет отнимать OBS для кодирования, чем ниже параметр по списку, тем больше используется процессор и при этом лучше качество

Профиль - профиль h.264

  • baseline - для совместимости со старыми устройства
  • main - для стримов
  • high - для стримов в высоком разрешении

Профиль high выглядит лучше main и имеет алгоритмы, которые позволяют лучше сжимать видео. Поэтому я остановился на нём.

Настройка - специальные настройки кодировщика, я оставил пустым

Настройка x264 - позволяет шаманить с кодировщиком с помощью ключей команды ffmpeg

А вот результаты с разными разрешениями и предустановками ЦП. Я использовал небольшой лайфхак - стрим идёт не в 60, а в 50 fps, чтобы улучшить качество картинки, но не потерять динамику.

1080p с Veryfast самый затратный вариант и видны просадки fps в игре

C Superfast процессор уже дышит свободнее, но и качество похуже

Чтобы меньше грузить процессор лучше спуститься на более низкое разрешение.

Даже Superfast всё равно отбирает 12% (Ryzen 7 2700), что для Call of Duty (например) неприемлемо, поэтому рассмотрим план Б...

Кодировка на видеокарте (AMD Advanced Media Framework)

Если стримить на Youtube с высоким битрейтом, то можно также обойтись простыми настройками как в случае с x264, но с битретом 6000 кбит на базовых настройках сложно получить хорошую картинку даже в 720p ( сужу по своей 5700XT). Смогу ли я настроить кодек хотя бы до уровня Superfast x264? Интрига! Мастер настройки нам в помощь.

-2

Предустановка - здесь можно выбрать предустановки для стриминговой платформы

Предустановка качества - для хорошей картинки ставим Качество

Профиль - профиль h.264, ставим High

Уровень профиля - в зависимости от разрешения и fps ставятся некоторые ограничения, чем выше профиль, тем меньше ограничений и возможно лучше качество, можно оставить Автоматическое

Тип кодирования - оставить как есть или выставить CABAC он даст лучшее качество

Максимум кадров-ссылок - количество ссылок в одном кадре (B-кадре или P-кадре) на другие кадры , чем их больше тем потенциально может быть лучше качество, меньшее число разгружает работу кодировщика

Режим пред-прохода - предварительно обрабатывает кадры в Group of Pictures (GOP, по умолчанию между ключевыми кадрами), включение может улучшить качество

Минимальное/Максимальное QP - параметры квантования, вкратце - чем меньше число, тем лучше картинка и меньше пикселизация

Данные накопителя - заполняет пустующие место поддерживая битрейт, ну как бы надо для CBR

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

VBAQ - Дисперсия на основе адаптивного квантования, практика показала, что лучше включить

HRD - оставить включённой, т.к. эта технология помогает не выходить за рамки битрейта

Повышение качества изображения с быстрым движением - бытует мнение, что эта функция не работает на карточках ранее 5000-й серии, поэтому пока выкл.

Буфер VBV - это собственно буфер кодека, по канону он должен быть 2 * Битрейт, но с ним можно играть в большую и меньшую сторону с риском потерь пакетов. Если уменьшить буфер и убрать в нуль Изначальное заполнение буфера то можно избежать затяжной пиксельной каши, но стрим будет с неё начинаться

Пиксельная каша
Пиксельная каша

Период IDR в кадрах - тут должен определяться размер GOP, но этот параметр не работает

Интервал I-кадров / Период I-кадров - эти параметры по повторяют параметр Интервал ключевых кадров

Интервал P-кадров / Период P-кадров - задать в секундах (интервал) или в кадрах (период) когда должен вставляться P-кадр. Чем чаще P-кадры, тем лучше картинка. Между P-кадрами вставляются B-кадры, т.е. когда мы ставим Период P-кадров=2, то мы имеем ввиду, что у нас будут идти два B-кадра, затем один P.

Передача OpenCL - Передача кадров с помощью OpenCL вместо памяти GPU. Преобразование OpenCL - Преобразует кадр на GPU, используя OpenCL вместо DirectCompute. Не знаю как эти параметры меняют качество, но они могут влиять на производительность от случая к случаю.

Чтобы улучшить картинку, я также включил Коррекцию изображения в
настройках драйвера и вот что получилось в 720p и 1080p

Вот ещё один вариант в 864p

А что если включить "Повышение качества изображения с быстрым движением"?

Как я говорил эта функция возможно доступна только от 5000-й серии и рассмотрим её включение отдельно, т.к. придётся поменять некоторые настройки

Настройки для 864p и "High Motion Quality"
Настройки для 864p и "High Motion Quality"

И вот так выглядит результат

Когда я сам искал какое-то описание параметра кодировщика AMF, то я нашёл мало руководств, где объясняли бы все параметры. Надеюсь эта статья кому-нибудь поможет в этой нелёгкой настройке AMF или подтолкнёт кого-то на новые эксперименты и открытия!

На этом всё спасибо за внимание.