WebRTC в Xeoma
Современные устройства (как мобильные, так и стационарные) часто сталкиваются с проблемой перегруженности приложениями. Это касается как занимаемой памяти, так и чисто визуальной навигации. В результате мы всё чаще стараемся найти такое решение, которое смогло бы собрать весь нужный нам функционал в одно приложение. К счастью наше спасение уже существует, и это браузеры – они обладают практически неограниченным потенциалом к интеграции. Это одна из основных причин, по которой в Xeoma есть отдельный модуль для работы с различными браузерами – Веб сервер. А начиная с версии 18.6.5, он заметно улучшился – теперь в него входит поддержка WebRTC.
Для начала ответим на наиболее очевидный вопрос: что такое WebRTC? Это протокол веб-коммуникации в реальном времени (от англ. Web Real-Time Communication), представляющий собой новый для браузеров способ работы с видео и аудио данными. Ему не требуются дополнительные плагины и приложения, а его главное преимущество – кросс-платформенность: каким бы браузером вы ни пользовались, WebRTC почти наверняка подойдёт для него.
Но для производителя ПО истинная ценность WebRTC кроется в другом – в предельно простом API. Что именно из этого следует, рассмотрим на примерах.
До появления версии 18.6.5, если камера передавала поток в формате H.264, то серверу его приходилось перекодировать (трансформировать) в MJPEG – только так полученное видео можно было просмотреть через браузер с помощью Веб сервера. Перекодирование брал на себя процессор сервера, поэтому нагрузка на него возрастала. Устранить эту нагрузку не представлялось возможным, поскольку сам браузер не мог декодировать поток самостоятельно, если он получен в формате H.264. Именно этот пункт и меняется с появлением WebRTC.
Теперь в настройках Веб сервера есть такие галочки:
Трансляция со звуком через WebRTC (перекодирование на стороне браузера) – позволяет серверу Xeoma отправлять на веб-страницу видео (и звук, если имеется) напрямую в формате H.264.
Трансляция со звуком через WebRTC с перекодированием на стороне Xeoma, если браузер не поддерживает формат потоковой передачи – проверяет, поддерживает ли подключенный на данный момент браузер WebRTC, и если нет – браузер всё равно получит картинку (а не чёрный экран), но перекодирование возьмёт на себя сервер.
«Погодите-ка! Ранее же говорилось, что подойдёт любой браузер!» На данный момент есть несколько исключений: Internet Explorer (а также Edge) и Safari не поддерживают WebRTC без помощи специальных плагинов.
Начиная с версии Xeoma 23.12.7, эти опции доступны и для серверов на Linux ARM. |
Чтобы просматривать камеры именно через WebRTC, не забудьте выбрать нужный режим в Опциях в браузере:
Использование WebRTC имеет 3 основных преимущества:
- Ниже нагрузка на сеть – поскольку H.264 это сжатое видео, по сети между сервером и веб-клиентом (браузером) будет передаваться значительно меньше данных, чем при использовании MJPEG. Это может стать решающим фактором в экономии пропускной способности (а значит, и денег), особенно если отдельных веб-клиентов много, и подключаются они издалека.
- Высокое качество – потоки в формате H.264 обычно выдают более высокий FPS и, в целом, качественнее аналогичного видео в формате MJPEG.
- Ниже нагрузка на ЦП сервера – поскольку изначально перекодирование не требуется, серверу не приходится дополнительно обрабатывать видео перед отправкой его на веб-страницу. В конечном итоге, это позволяет подключить больше камер на один и тот же сервер, особенно если Xeoma на нём работает в фоновом режиме (только серверная часть) и не анализирует потоки (например, не используется Детектор движения) – так даже старые процессоры смогут обслуживать множество веб-клиентов.
Есть, правда, и один недостаток: декодированием придётся заниматься стороне с браузером – т.е. повышается нагрузка на ЦП клиента. Но стоит отметить, что в браузере нужные камеры обычно просматриваются по одной, а не все вместе; это понижает нагрузку.
Важно: Если в качестве сервера для http/https у вас используется Apache или nginx, а также стоит Xeoma 23.12.7 или выше, то можно зайти в файл config.json в папке «XeomaWeb» и поставить для параметра isNotUsePortForWebrtcCameraViewing
значение true. Так Xeoma, работая с WebRTC, будет использовать обычные порты для http (80) и https (443).
обновлено 19 декабря 2023
Читайте также:
Видеонаблюдение на Google Pixel: больше, выше, сильнее
Маркировка камер в Xeoma