В статье пойдет речь о том, как запустить трансляцию и записывать видео при использовании кодировщика NVENC H.265/HEVC в FFmpeg OBS.
Полноценная реализация H.265/HEVC в OBS Studio была добавлена разработчиками в OBS 28.0 версии (настройки представлены в отдельной статье). До этого кодирование видео осуществлялось при помощи FFmpeg в OBS, и именно этот способ будет рассмотрен в данном руководстве.
Особенность данного способа
- Поддержка в OBS более ранних версиях, где ранее не был доступен HEVC, например, OBS 27.2.4 и ниже.
- Более гибкая настройка кодировщика, что актуально для продвинутых пользователей.
- Настройки адаптированы лично мной и способы предоставить чуть более высокое качество, чем стандартная реализация.
Требования для трансляций
Поддержка видеокодека H.265/HEVC доступна только для трансляций на YouTube и появилась еще в декабре 20-го года, благодаря поддержке HLS (HTTP Live Streaming) - протокола, который предназначен для потоковой передачи в реальном времени.
Особенность HEVC заключается в том, что кодек обеспечивает более высокое сжатие данных от 25 до 50 % при том же качестве видео по сравнению с H.264/AVC
Я бы не рекомендовал использовать NVENC HEVC владельцам видеокарт на архитектуре Pascal и ниже, т.к. кодировщик на данных видеокартах для HEVC на 25% менее эффективен, чем на Turing и Ampere, и не имеет поддержки B-кадров.
Настройка кодировщика через FFmpeg
Запустите OBS Studio и перейдите в Файл/Настройки/Вывод/Запись/Режим вывода расширенный
Укажите тип «Пользовательский вывод (FFmpeg)»
Тип вывода FFmpeg: На указанный адрес (URL)
Путь к файлу или URL-адрес: Пока не трогаем
Формат контейнера: hls
Битрейт видео: 0 kbps
Интервал ключевых кадров: 0
Поставьте галочку "Показать все кодеки"
Кодировщик видео: hevc_nvenc
Битрейт аудио: 160 kbps
Кодировщик аудио: aac
Настройки кодировщика видео:
preset=p5 profile=main tune=hq multipass=qres rc=cbr b=18M bufsize=36M g=120 rc-lookahead=20 no-scenecut=1 bf=2 b_adapt=0 b_ref_mode=middle temporal-aq=1 spatial-aq=1
Чтобы изменить битрейт, укажите необходимое значение вместо b=18M
Список параметров на github (работают не все).
Раздел "Видео"
- Если у вас 2К или 4К монитор, то укажите необходимое выходное разрешение. Для трансляции на YouTube достаточно 2560x1440.
- Если разрешение монитора Full HD, то выходное разрешение так и оставляем 1920x1080.
Ключ трансляции
Перейдите в творческую студию управления трансляций и создайте новый ключ трансляций, как показано на скриншоте.
Трансляция будет работать в 2К разрешении, вне зависимости от указанного выходного разрешения в OBS, т.к. масштабирование до 2К будет осуществляться за счёт ресурсов YouTube. Это необходимо, чтобы получить поддержку кодека VP9, который обеспечит более высокое качество изображения.
Скопируйте URL трансляции, а также убедитесь, что установлена малая задержка (~10 сек.)
Возвращаемся в настройки кодировщика в OBS Studio и вставляем в "Путь к файлу или URL-адрес" скопированный URL трансляции.
В конце необходимо добавить stream.m3u8
Как запустить трансляцию
Трансляция запускается по нажатию на кнопку "Начать запись"
Настройки для записи видео
Настройки для записи видео почти ни чем не отличаются, за исключением некоторых пунктов.
Тип вывода FFmpeg: В файл
Путь к файлу или URL-адрес: Укажите папку для сохранений
Формат контейнера: mp4
Битрейт видео: 0 kbps
Интервал ключевых кадров: 0
Поставьте галочку "Показать все кодеки"
Кодировщик видео: hevc_nvenc
Битрейт аудио: 320 kbps
Кодировщик аудио: aac
Настройки кодировщика видео:
preset=p5 profile=main tune=hq multipass=qres rc=cbr b=25M bufsize=50M g=120 rc-lookahead=32 bf=2 b_adapt=1 b_ref_mode=middle temporal-aq=1 spatial-aq=1
Настройки для высокого качества записи:
preset=p5 profile=main tune=hq rc=constqp qp=20 g=60 bf=2 b_adapt=0 b_ref_mode=middle temporal-aq=1 spatial-aq=1