::: warn Статья не дописана
:::
Стриминг с кодера
В этом уроке наша задача приобрести навыки стриминга с кодера.
Кодер - это программа или устройство, которое захватывает изображение с камеры, компьютера или другого источника видеосигнала и преобразует его в видеопоток.
В данном уроке рассмотрим работу с аппаратным кодером.
Аппаратный кодер – это устройство, которое захватывает, сжимает и преобразует аудиовизуальные данные в формат, подходящий для потоковой передачи и / или записи. Он представляет собой устройство, принимающее видео- и аудиосигнал на входе, и выдающее сетевой поток на выходе.

Отличие программного обеспечения от аппаратного кодера заключается в том, что программное обеспечение работает на компьютере, на котором, в свою очередь, выполняется множество других процессов. Аппаратные кодеры, с другой стороны, являются устройствами, разработанными специально для кодирования. Этот факт делает их более надёжными, чем потоковое программное обеспечение, потому что здесь другие процессы не мешают его работе.
Проведение трансляции с аппаратного кодера
Для начала нужно убедиться, что компьютер, с которого мы будем подключаться к кодеру, и сам кодер находятся в одной подсети и „видят“ друг друга.
Через браузер по IP-адресу открываем веб-интерфейс кодера. Если у кодера есть дисплей, то на нем обычно показывается полученный IP адрес, иначе придется поискать его адрес в сети.
Если устройство новое, с большей вероятностью оно будет иметь статический ip-адрес, чтобы изменить его или сделать динамическим, необходимо задать соответствующие настройки согласно инструкции.
Через веб-интерфейс настраиваются параметры
- Сетевого подключения
- Кодирования потока
- Выбора входных интерфейсов: откуда брать звук и видео при наличии нескольких входов.
Также обычно можно обновить прошивку и удаленно перезагрузить кодер.
Виды кодеров
Кодеры выпускаются для разных входных сигналов. Вы можете встретить, например:
- HDMI
- SDI
- VGA
- CVBS (аналоговое видео стандартного разрешения)
Бывают комбинированные кодеры (HDMI + CVBS), отдающие сразу два потока.
::: info Подробнее про видеоинтерфейсы
:::
Кодер может иметь или не иметь отдельный вход для аналгогового звука. Это очень полезный интерфейс, поскольку при использовании IP камер часто оказывается, что передать звук через них не получится -- не во всех камерах есть вход для внешнего звукового источника, а в камерах класса систем видеонаблюдения, как правило, звук передается кодеком G.711 или его близкими родственниками -- в запись или эфир это выводить нельзя.
Кодеры HDMI с аналоговым звуковым входом могут также принимать звук через HDMI. Например, вы так можете передать звук с компьютера.
Протоколы стриминга
С протоколами стриминга вы уже знакомы, здесь вы можете увидеть их в действии.
Разные модели кодеров поддерживают разный набор протоколов, но два основных вы там найдете точно:
- RTMP для стриминга на удаленный сервер трансляции (Youtube, VK, Telegram, в различные CDN),
- RTSP для видеопроизводства (в нашем курсе мы рассматриваем его для передачи потока в OBS).
В современных кодерах также часто встречаются:
- NDI -- профессиональный протокол телевизионного видеопроизводства. Бывает как полноценным (там потоки могут достигать 100 мегабит в секунду), так и „NDI HX“ -- обёртка над сжатым в H.264 или H.265 видео, тем не менее, поддерживаемая устройствами и программами экосистемы NDI.
- SRT -- родственный для NDI протокол, предназначенный, в отличие от старшего брата, для доставки потоков по интернету от удаленных источников.
Помимо этого встречаются кодеры, которые сразу могут формировать HLS потоки, которые можно сразу использовать в браузере (правда, со свойственной этому протоколу задержкой).
Стриминг RTMP
Общепринятым протоколом для стриминга до сих пор является RTMP. Несмотря на то, что его похоронили в веб-браузерах, он все еще является протоколом по умолчанию для обмена потоками между источниками трансляции и видеоплатформами.
В настройках стрима включаем протокол RTMP. В поле для url-адреса вставляем скопированный адрес со стримингового сервиса и ключ трансляции. Обычно эти два поля в кодерах записываются одной строкой:
rtmp://<адрес сервера>/<ключ трансляции>.
Иногда чтобы кодер правильно захватил видео и пустил его в трансляцию, бывает нужно перезапустить устройство.
Распределение процессорной нагрузки
Кодирование видео -- ресурсоёмкий процесс. Современные, даже бытовые, компьютеры справляются с ним легко, но до той поры, пока не нужно параллельно выполнять еще несколько вычислительно тяжелых задач. Например, при трансляции и записи из OBS, когда есть несколько потоков на входе, процессор бытового ноутбука заметно нагружается, а при загрузке более 80% можно ожидать подрывов в выходном потоке и других проблем, связанных с производительностью компьютера.
Помочь перегруженному компьютеру можно, сняв с него задачи по трансляции и записи. Запись можно переадресовать другому компьютеру в локальной сети, отдав выходной поток по NDI -- это само по себе тоже нагружает процессор, но не так сильно, как кодирование видео. Таким же образом можно отдать и задачу трансляции, но есть способ обойтись без второго компьютера: можно использовать кодер, отдав ему программный выход OBS.
- Подключаете кодер к HDMI выходу компьютера
- Выводите программное окно (то, что идет в эфир) на второй монитор
- Настраиваете вывод звука в этот выход
- В настройках OBS отмечаете, что мышку на на втором экране показывать не надо
- В кодере настраиваете адрес трансляции.
В таком случае трансляция не будет зависеть от вашего компьютера. Даже если вы его отключите от кодера, трансляция будет идти -- там будет показываться „матрас“ (цветная настроечная таблица) или другая "заглушка", которую по умолчанию показывает кодер, когда нет сигнала на входе. Нагрузку на кодирование кодер также заберет на себя, вашему компьютеру должно стать легче.
Недостаток такого подхода -- вы не очень-то контролируете трансляцию. В кодерах, как правило, нет управления потоком и диагностики происходящего. Справедливости ради, в OBS или VMix вы тоже мало что можете сделать во время эфира. Но запускать и останавливать стрим из программы удобнее и предсказуемее.