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

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).

Поддержка изменения порта в RTSP Трансляторе Начиная с релизной версии Xeoma 21.3.4, «RTSP Транслятор» выведет предупреждение, если указанный порт уже занят.

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

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

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

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

Это интересно: Начиная с версии Xeoma 20.11.30 добавлена опция возможность вещать поток H264 без перекодирования.

Начиная с версии Xeoma 21.3.4 в «RTSP Транслятор» добавлена возможность указывать конечный URL трансляции.

Начиная с версии Xeoma 22.10.12 «RTSP Транслятор» стал доступен не только в редакции Xeoma Pro (Про), но и в Xeoma Standard (Стандарт).

Начиная с версии Xeoma 22.11.25 добавлена возможность выбора средства осуществления трансляции: традиционный инструмент ffserver (больше опций, больше поддерживаемых операционных систем) или более новый и более стабильный live555 (работает на 32- и 64-битных Windows и Linux).

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

6 октября 2017, обновлено 25 ноября 2022

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