← Назад к списку статей

RTSP Транслятор

Транслятор работает для любой точки мира

На сегодняшний день аналоговые и USB-камеры постепенно вытесняются с рынка видеонаблюдения, поскольку передача видео по сети значительно упрощает подключение нескольких камер к одному и тому же серверу. Никаких проводов, проблем со входами, физических ограничений для машины — во всём этом IP-камеры оставили своих менее юных собратьев далеко позади. Однако и в этой, на первый взгляд, идеальной технологической цепочке есть слабое звено — сама сеть. Видеофайлы содержат большое количество информации, и поэтому, чтобы передавать их между многими источниками и приёмниками, понадобится мощная и стабильно работающая сеть. Такую не все могут себе позволить.

Так есть ли способ передавать видео высокого качества по простой сети, не перегружая её? И можно ли заставить аналоговые и USB-камеры работать аналогичным образом? В этой статье мы рассмотрим один из способов, как этого добиться.

RTSP Транслятор иконка

Для начала проясним терминологию. Параметр видеопотока, показывающий нам, сколько «весит» этот поток для сети, называется битрейт и измеряется в битах в секунду (чаще всего в Кб/с или Мб/с). Обычно роутеры предоставляют пользователям в сумме порядка 100 Мб/с (впрочем, более дорогие модели позволяют использовать и 1 Гб/с). Таким образом, чтобы разгрузить сеть нам нужно свести битрейт к минимуму, не теряя качества видео. Этого можно добиться с помощью стандарта сжатия под названием H.264 (его мы рассмотрели в отдельной статье). URL-адреса таких сжатых потоков обычно начинаются на RTSP (англ. Real Time Streaming Protocol, потоковый протокол реального времени), а не HTTP (например, rtsp://192.168.0.14:554/h264). Однако не все IP-камеры поддерживают этот стандарт (подавляющее большинство современных моделей работают с ним), а аналоговые и USB-камеры не поддерживают сжатие в принципе, так как работа по сети для них изначально не подразумевалась.

Рассмотрим модуль «RTSP Транслятор» в Xeoma – он позволяет перекодировать любой поток в RTSP (в том числе, в H.264), как с аналоговых, так и с USB, и IP-камер. Для начала добавим его в цепочку:

Простая цепочка с RTSP Транслятором

Для трансляции почти всё готово, осталось только настроить сам модуль:

Настройки модуля RTSP Транслятор

Если выбран mpeg4 или mjpeg, «RTSP Транслятор» может начинать — скопируйте путь (в него может быть включён и порт: rtsp://localhost:30001/RtspTransaltor.2) в модуль «Универсальная камера» на другой Xeoma и замените localhost на IP-адрес первой машины:

Трансляция пошла

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

Однако и mpeg4, и mjpeg «много весят» для сети. Если мы хотим транслировать поток в формате H.264 и уменьшить нагрузку на сеть, нужно выбрать пункт libx264 в качестве Типа кодировщика. Также понадобится определённая версия ffmpeg, её можно скачать здесь:
Windows: http://felenasoft.ru/shared/modules/ffmpeg/ffmpeg.exe
Linux: http://felenasoft.ru/shared/modules/ffmpeg/ffmpeg64
Обратите внимание, что для MacOS такой опции нет, так как отсутствует соответствующая версия ffmpeg. Указываем путь к нужному файлу на машине:

Уменьшаем битрейт с помощью H.264

Чтобы свести битрейт к минимуму, можно выбрать Высокую степень сжатия. В результате получаем сжатый поток с заметно более низким битрейтом, не потеряв качество.

Стоит отметить, что и у этого способа есть слабое место — сжатие и декодирование («разжатие») потоков нужно производить постоянно в режиме реального времени, и задача эта ложится на процессор. Следовательно, нагрузка на ЦП сервера неизбежно возрастёт в зависимости от используемой степени сжатия.
Отсюда вытекает важная проблема, которую приходится решать администраторам систем видеонаблюдения: нагрузка на ЦП или нагрузка на сеть? Она, в свою очередь, сводится в вопросу: мощный сервер или мощная сеть? Когда камер мало, вопрос этот практически не стоит, поскольку с такой нагрузкой справится даже допотопная техника. Но чем больше масштаб (50-80 камер на сервер), тем выше требования. Самое популярное решение этой проблемы — это, разумеется, золотая середина: на просмотр ставится поток в формате MJPEG, а на запись в архив — в формате H.264. Так серверу не придётся декодировать видео в реальном времени, а через сеть будет проходить только по одному несжатому потоку с камеры.

Способы эффективной передачи данных на большие расстояния постепенно совершенствуются (например, H.265), и Xeoma всегда наготове — за счёт этих способов расширяется функционал.

6 октября 2017

Читайте также:
Видеонаблюдение: Как заниматься его администрированием?
Беспроводное видеонаблюдение – своими руками