RTSP Транслятор
На сегодняшний день аналоговые и USB-камеры постепенно вытесняются с рынка видеонаблюдения, поскольку передача видео по сети значительно упрощает подключение нескольких камер к одному и тому же серверу. Никаких проводов, проблем со входами, физических ограничений для машины — во всём этом IP-камеры оставили своих менее юных собратьев далеко позади. Однако и в этой, на первый взгляд, идеальной технологической цепочке есть слабое звено — сама сеть. Видеофайлы содержат большое количество информации, и поэтому, чтобы передавать их между многими источниками и приёмниками, понадобится мощная и стабильно работающая сеть. Такую не все могут себе позволить.
Так есть ли способ передавать видео высокого качества по простой сети, не перегружая её? И можно ли заставить аналоговые и USB-камеры работать аналогичным образом? В этой статье мы рассмотрим один из способов, как этого добиться.
Для начала проясним терминологию. Параметр видеопотока, показывающий нам, сколько «весит» этот поток для сети, называется битрейт и измеряется в битах в секунду (чаще всего в Кб/с или Мб/с). Обычно роутеры предоставляют пользователям в сумме порядка 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-камер. Для начала добавим его в цепочку:
Для трансляции почти всё готово, осталось только настроить сам модуль:
Если выбран mpeg4 или mjpeg, «RTSP Транслятор» может начинать — скопируйте путь (в него может быть включён и порт: rtsp://localhost:30001/RtspTransaltor.2) в модуль «Универсальная камера» на другой Xeoma и замените localhost на IP-адрес первой машины:
Если вторая машина находится в другой сети, то на первой понадобится статический внешний IP-адрес (или его заменитель) с проброшенными портами (если в адресе порт не указан, пробросьте 554 — это стандартный порт для 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. Указываем путь к нужному файлу на машине:
Чтобы свести битрейт к минимуму, можно выбрать Высокую степень сжатия. В результате получаем сжатый поток с заметно более низким битрейтом, не потеряв качество.
Стоит отметить, что и у этого способа есть слабое место — сжатие и декодирование («разжатие») потоков нужно производить постоянно в режиме реального времени, и задача эта ложится на процессор. Следовательно, нагрузка на ЦП сервера неизбежно возрастёт в зависимости от используемой степени сжатия.
Отсюда вытекает важная проблема, которую приходится решать администраторам систем видеонаблюдения: нагрузка на ЦП или нагрузка на сеть? Она, в свою очередь, сводится в вопросу: мощный сервер или мощная сеть? Когда камер мало, вопрос этот практически не стоит, поскольку с такой нагрузкой справится даже допотопная техника. Но чем больше масштаб (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
Читайте также:
Видеонаблюдение: Как заниматься его администрированием?
Беспроводное видеонаблюдение – своими руками