03 Протоколы и программные инструменты
1. Зачем это знать

В лабораторных работах курса вы будете использовать несколько программных инструментов для работы с аудио‑ и видеопотоками: ONVIF Device Manager, OBS Studio, FFmpeg и GStreamer.
Все они не просто «проигрывают видео», а активно используют медиапротоколы — специальные сетевые правила и форматы, по которым передаётся видео и звук между устройствами и программами.
Важно понимать:
- каждый инструмент умеет принимать (вход) и отправлять (выход) медиа по сети;
- для этого используются разные протоколы (RTSP, RTMP, SRT, HLS, NDI и др.);
- типичные операции, которые вы будете выполнять:
захват → обработка / перекодирование → отправка (рестриминг).
Далее разберём, как это выглядит в каждом инструменте и какие задачи вы будете решать.
2. OBS Studio: универсальный «микшер» для приёма и отправки потоков
2.1. OBS Studio как центр сбора и выдачи видео
OBS Studio — это приложение, которое часто используют стримеры, студии и учебные заведения. Его основная роль — быть видеомикшером и энкодером:
- оно собирает разные источники видео и аудио (камеры, экраны, медиафайлы, сетевые потоки);
- позволяет комбинировать их (накладывать текст, логотипы, менять сцены);
- кодирует результат в нужный формат и отправляет «наружу» — в Интернет или локальную сеть.
С точки зрения нашего курса важно, что OBS:
- умеет принимать видеопотоки с использованием медиапротоколов;
- умеет отправлять сформированный поток с использованием других протоколов.
2.2. Источники для OBS: RTSP, NDI и локальные устройства
OBS Studio может принимать видео из нескольких типов источников:
- RTSP-камеры
- RTSP (Real Time Streaming Protocol) — протокол, который часто используют IP‑камеры видеонаблюдения для передачи живого видео.
- В OBS вы можете добавить сетевой источник и указать RTSP‑URL камеры (например,
rtsp://ip-адрес/путь). - Результат: OBS получает живое видео с камеры через сеть и может использовать его как часть общей сцены.
::: warn Своими силами OBS не умеет корректно работать с RTSP, но помогает установка плагина GStreamer и добавление источников Gstreamer source с указанием строки в формате GStreamer.
Про то, как работать с этим инструментом, смотрите в теме 7 GStreamer.
:::
- NDI-источники
- NDI (Network Device Interface) — протокол для передачи видео и аудио по локальной сети с низкой задержкой, часто используется внутри студий и продакшен‑среды.
- В сети могут работать другие компьютеры или камеры, которые выдают NDI‑поток (например, другая машина с OBS или специализированный NDI‑кодер).
- OBS (с установленным модулем NDI) может обнаружить такие источники и использовать их видеосигнал как обычную камеру.
- Локальные устройства
- Это устройства, подключённые непосредственно к компьютеру: USB‑вебкамеры, HDMI‑платы захвата, микрофоны, экраны мониторов.
- В этом случае видео не идёт по сети, но логика в OBS такая же: это один из входов, который можно смешивать с сетевыми источниками.
Таким образом, OBS выступает в роли универсального приёмника, объединяя сетевые и локальные видеопотоки.
2.3. Вывод из OBS: RTMP и SRT
После того как OBS собрал и «смонтировал» нужную картинку, его задача — отправить итоговый видеопоток дальше. Для этого чаще всего используется:
- RTMP (Real-Time Messaging Protocol)
- Платформы вроде YouTube, Twitch, VK Видео предоставляют RTMP‑URL и «ключ трансляции».
- OBS кодирует видео (например, в H.264 + AAC) и отправляет его по RTMP на сервер платформы, откуда оно распространяется зрителям.
- SRT (Secure Reliable Transport)
- В контексте курса вы будете использовать SRT для передачи потока в локальную сеть или между узлами в рамках лабораторной инфраструктуры.
- OBS может выступать как SRT‑источник, отправляя поток на другой компьютер, сервер или процессинг‑узел.
Ключевой вывод: OBS Studio сочетает разные протоколы:
- на входе — RTSP, NDI, локальные устройства;
- на выходе — RTMP, SRT и др.
Это позволяет строить гибкие схемы: например, принимать RTSP с IP‑камеры и отправлять обработанный поток в YouTube по RTMP.
3. FFmpeg: «швейцарский нож» для работы с медиа
::: info С FFMPEG вы знакомы с курса Компьютерная графика и, кто выполнял задачи в онлайн-курсе, вполне освоили этот инструмент. Но если вдруг позабыли, то для полноты картины оставлю это описание:
:::
3.1. Что такое FFmpeg
FFmpeg — это мощный инструмент командной строки для работы с аудио‑ и видеоданными. Его можно рассматривать как конструктор, который:
- принимает разные типы входов (файлы, устройства, сетевые потоки);
- может декодировать, перекодировать, фильтровать, изменять формат;
- выдаёт результат в виде файла или сетевого потока через нужный протокол.
В отличие от OBS, у FFmpeg нет графического интерфейса: вы задаёте все действия в виде команды в терминале. Зато он:
- очень гибок;
- легко автоматизируется (скрипты, серверные процессы);
- широко используется в продакшене и на серверах.
3.2. Входы FFmpeg: RTSP, HLS, локальные файлы и устройства
FFmpeg поддерживает множество типов источников. В рамках курса нам важны следующие:
- RTSP-поток
- FFmpeg может подключаться к IP‑камерам или другим RTSP‑сервером, получать оттуда живое видео и звук.
- Типичный сценарий: забрать поток с камеры и перекодировать его в другой формат или другой протокол.
- HLS-поток
- HLS (HTTP Live Streaming) — протокол, где видео разбивается на маленькие файлы (сегменты), которые скачиваются по HTTP.
- FFmpeg может читать HLS‑плейлисты (файл
.m3u8), загружать сегменты и собирать из них непрерывный поток или файл. - Это полезно, если нужно, например, записать Интернет‑трансляцию или конвертировать её во что‑то ещё.
- Локальные файлы
- Обычные файлы с видео или аудио (MP4, MKV, MOV и т.д.).
- FFmpeg может использовать их как источник, чтобы потом отправить содержимое в виде сетевого потока (например, по RTMP или SRT).
- Локальные устройства
- Захват с вебкамеры, карт захвата, микрофонов и других устройств, доступных ОС.
- Это даёт возможность, например, прямо с камеры отправить поток в сеть, минуя графические программы.
3.3. Выходы FFmpeg: RTMP, HLS, SRT, RTP
FFmpeg одинаково гибок и на выходе. Он может выдавать поток в нескольких сетевых форматах:
- RTMP
- Как и в случае с OBS, FFmpeg может выступать как RTMP‑клиент, отправляя поток на стриминговую платформу или собственный RTMP‑сервер.
- Это часто используют на серверах, где нужно перенаправлять или перекодировать потоки без участия человека.
- HLS
- FFmpeg умеет генерировать HLS‑выход: нарезать видео на сегменты и создавать плейлист
.m3u8. - В таком виде трансляцию можно отдавать через обычный веб‑сервер (HTTP), и её сможет воспроизводить браузер или проигрыватель.
- FFmpeg умеет генерировать HLS‑выход: нарезать видео на сегменты и создавать плейлист
- SRT
- FFmpeg поддерживает протокол SRT: поток можно отправить на другой узел, где его примет, например, другой FFmpeg или сервер вещания.
- Это полезно для надёжной передачи между площадками или при построении распределённых систем.
- RTP (Real-time Transport Protocol)
- FFmpeg может упаковывать аудио и видео в RTP и отправлять их по сети.
- Это часто используется в специализированных системах, где приёмник ожидает RTP‑поток (например, медиасерверы, некоторые профессиональные кодеры/декодеры).
::: info Более детально и глубоко про FFMPEG мы поговорим в теме 6 FFMPEG и в лабораторной работе 1.
:::
4. GStreamer: конструктор медиапайплайнов
4.1. Концепция пайплайна в GStreamer
GStreamer — это фреймворк для построения медиапроцессинга в виде конвейера (pipeline).
Под конвейером понимается цепочка модулей (элементов), через которые последовательно проходит медиа:
- элемент‑источник (получает данные);
- элементы обработки (фильтры, кодеки, микшеры);
- элемент‑приёмник (отправляет или выводит данные).
Каждый элемент выполняет свою задачу, а вы, как автор пайплайна, «собираете» их в нужном порядке. Это немного похоже на электрическую схему, где блоки соединяются проводами.
4.2. Примеры модулей: rtspsrc и srtsink
В контексте медиапротоколов нас интересуют, прежде всего, элементы источников и приёмников, которые работают с сетью.
rtspsrc— источник RTSP-потока- Этот элемент подключается к RTSP‑серверу (например, IP‑камере) и получает от него медиаданные.
- Внутри
rtspsrcрешает задачи подключения, обмена служебной информацией и получения RTP‑пакетов от камеры. - На выходе элемента вы получаете аудио‑ и видеопотоки, которые можно далее декодировать, обрабатывать, показывать или перенаправлять.
srtsink— приёмник для отправки через SRT- Элемент, который принимает на вход медиа из пайплайна и отправляет его по протоколу SRT в сеть.
- Вы задаёте параметры (адрес, порт, режим SRT), и
srtsinkупаковывает поток в SRT и передаёт его на целевой узел. - Это аналог FFmpeg‑команды с SRT‑выходом, но в виде блока внутри GStreamer‑конвейера.
Соединяя rtspsrc и srtsink через соответствующие кодеки и фильтры, вы можете построить, например, конвейер:
RTSP‑камера → декодирование → обработка → кодирование → отправка по SRT
5. Ключевые операции: захват, транскодирование, рестриминг
Все перечисленные инструменты — OBS Studio, FFmpeg и GStreamer — по сути решают три базовые задачи.
5.1. Захват (capture)
Захват — это получение исходного аудио‑ и видеосигнала из какого‑то источника:
- с IP‑камеры по RTSP;
- с другого компьютера по NDI;
- с локальной вебкамеры или HDMI‑карты;
- из файлов или HLS‑потока.
Пример: OBS добавляет RTSP‑камеру как источник, FFmpeg подключается к RTSP‑URL, GStreamer использует rtspsrc.
5.2. Транскодирование (transcoding)
Транскодирование — это перекодирование медиа:
- изменение кодека (например, из H.265 в H.264);
- изменение битрейта (скорости передачи данных);
- изменение разрешения (Full HD → HD);
- изменение частоты кадров.
Зачем это нужно:
- подогнать поток под ограничения сети или платформы;
- уменьшить нагрузку на каналы связи;
- обеспечить совместимость с приёмником.
FFmpeg особенно силён в транскодировании, OBS делает это «под капотом», GStreamer позволяет настроить это через элементы кодирования.
5.3. Рестриминг (restreaming)
Рестриминг — это приём потока по одному протоколу и отправка по другому (или тому же, но на другой адрес):
- RTSP → RTMP (камера → стриминговая платформа);
- RTSP → SRT (камера → другой узел в локальной сети);
- HLS → RTP (Интернет‑поток → профессиональная система);
- файл → RTMP / SRT / RTP (записанное видео → имитация живой трансляции).
Во всех случаях инструменты действуют как промежуточное звено: они принимают медиапоток, при необходимости обрабатывают его и отправляют дальше.
::: info GStreamer мы рассмотрим детально в теме 7 GStreamer и в лабораторной работе 2.
:::