Self-hosted Apps

OBS

OBS Studio (Open Broadcaster Software) — бесплатная программа с открытым кодом для записи экрана и прямых трансляций.

Что такое OBS

OBS (полностью — OBS Studio, Open Broadcaster Software) — бесплатная программа с открытым исходным кодом для записи видео и прямых трансляций. Работает в Windows, macOS и Linux. В русскоязычном сообществе её называют просто «обс».

Задача OBS — собрать картинку из нескольких источников (экран, камера, окно игры, картинки, текст), смешать звук и отдать результат либо в файл, либо потоком на стриминговый сервер. Это де-факто стандарт для стримеров, вебинаров, записи курсов и подкастов.

Проект развивается сообществом и не привязан к конкретной площадке: OBS одинаково стримит на Twitch, YouTube, VK Видео или на ваш собственный сервер.

Сцены, источники и микшер

Три понятия, из которых состоит вся работа:

  • Источник (Source) — что показывать: «Захват экрана», «Захват окна», «Устройство захвата видео» (камера или карта захвата), «Браузер», «Изображение», «Текст».
  • Сцена (Scene) — набор источников с их расположением и размером. Сцены переключают на лету: «заставка», «игра + камера», «только слайды».
  • Микшер — уровни звука по каждому источнику, с фильтрами (шумоподавление, гейт, компрессор).

Полезное сверх базы: Studio Mode (готовите сцену на превью и выпускаете в эфир по кнопке), Replay Buffer (держит последние секунды в памяти и сохраняет по горячей клавише), виртуальная камера (OBS отдаёт картинку как веб-камеру — так его подключают к Jitsi Meet, Zoom или Teams), плагин obs-websocket для управления снаружи.

Кодировщик: CPU или GPU

Самый важный выбор в настройках. Сжатие видео — тяжёлая операция, и делать её можно по-разному:

Кодировщик Где считает Нагрузка на CPUКомментарий
x264 CPUвысокая лучшее качество на медленных пресетах, но ест ядра
NVENC отдельный блок на GPU NVIDIA почти нулевая стандартный выбор, если карта NVIDIA
AMF GPU AMD низкая доступен на картах Radeon
QuickSync встроенная графика Intel низкая выручает, когда дискретной карты нет

Ключевой факт про NVENC: это выделенный аппаратный блок видеокодирования, он не занимает CUDA-ядра. Поэтому игра и стрим не дерутся за одни и те же ресурсы — при стриме игр NVENC почти всегда правильнее x264. На современных картах разрыв в качестве с x264 небольшой.

Если стримите с одной машины, а игра идёт на ней же — смотрите на ядра и потоки процессора: именно они кончаются первыми при x264.

Свой сервер вместо Twitch и YouTube

OBS отдаёт поток по RTMP, а принять его может не только площадка, но и ваш VPS. Так делают корпоративные трансляции, когда контент не должен уходить на публичные сервисы.

Готовые приёмники: nginx с модулем nginx-rtmp-module, MediaMTX, SRS, Owncast. Обратите внимание: RTMP-модуля в стандартной сборке Nginx нет, его собирают отдельно. Пример конфигурации:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;

            hls on;
            hls_path /var/www/hls;
            hls_fragment 3s;
        }
    }
}

В OBS в разделе «Вещание» выбирают «Пользовательский сервер»: адрес rtmp://<ip-сервера>/live, ключ потока — любой. Зрители смотрят HLS-плейлист, который раздаёт обычный HTTP-сервер.

Что важно понимать про такой сервер:

  • Порт 1935/TCP нужно открыть в firewall — это стандартный порт RTMP.
  • Упор идёт в канал, а не в CPU. Ретрансляция потока не требует перекодирования: сервер просто раздаёт байты. Считайте битрейт × число зрителей — при десятках зрителей это уже гигабиты, и дальше нужен CDN.
  • RTMP плюс HLS дают задержку в несколько секунд. Для интерактива (когда зритель отвечает голосом) это много — там нужен WebRTC-стек, а не RTMP.

Связанные термины

  • GPU — где работает аппаратный кодировщик NVENC
  • CPU — ресурс, который расходует программный x264
  • Nginx — с модулем RTMP принимает поток от OBS
  • VPS — на нём поднимают собственный стриминговый сервер
  • CDN — нужен, когда зрителей становится много
  • Jitsi Meet — куда OBS подключают через виртуальную камеру

Готовы запустить GPU-задачу?

Запустить GPU-сервер