7 способов отобразить видео с rtsp ip-камеры на веб-странице и 2 в мобильном приложении

Содержание:

Как узнать RTSP адрес

Ссылка может находиться в документации или явно указываться в веб-интерфейсе устройства. Если известно, что камера точно поддерживает RTSP, но параметры нигде явно не указаны, их придется выяснять:

  1. На сайте разработчика.
  2. Запросить напрямую у производителя или поставщика. Как правило, по запросу они такую информацию предоставляют, с этим нет проблем даже у китайских вендоров с AliExpress.
  3. Распознать камеру с помощью протокола ONVIF, который поддерживается практически всеми моделями.

Для последнего потребуется ПО Onvif Device Manager, компьютер под управлением Windows и сама камера.

Device Manager умеет конфигурировать видеосервер, захватывать видео и так далее, но самая важная функция этой программы в данном случае — WS-Discovery, обнаружение устройств в сети.

Когда вы скачали и поставили программу, нужно сделать следующее:

  • запустить ее и нажать внизу кнопку Refresh. Начнется процесс поиска;
  • когда камера обнаружится, выбрать в меню пункт Live Video;
  • под картинкой будет адрес rtsp-ссылки, который можно скопировать для дальнейшего использования.

Полный список опций

Это краткое описание опций для команд openRTSP и playSIP.

-4

вывести файл в формате ‘.mp4’ (в ‘stdout’, если также не задана опция «-P ИНТЕРВАЛ-В-СЕКУНДАХ»)

-a

воспроизводить только аудиопоток (в ‘stdout’, если также не задана опция «-P ИНТЕРВАЛ-В-СЕКУНДАХ»)

-A НОМЕР КОДЕКА

укажите номер статического формата полезной нагрузки RTP аудиокодека для запроса с сервера (только «playSIP»)

-b РАЗМЕР БУФЕРА

изменить размер буфера выходного файла

-B РАЗМЕР БУФЕРА

изменить размер входного буфера сетевого сокета

-c

воспроизводить непрерывно

-C

явно запрашивать многоадресный поток, даже если в ответе сервера «DESCRIBE» не указан многоадресный адрес

(Обратите внимание, что не все серверы поддерживают это.) (Только «openRTSP»). -d ДЛИТЕЛЬНОСТЬ

-d ДЛИТЕЛЬНОСТЬ

укажите явную продолжительность

-D МАКСИМАЛЬНЫЙ-РАЗРЫВ-МЕЖДУ-ПАКЕТАМИ

указать максимальный период бездействия перед выходом

-E ПОЛНОЕ ВРЕМЯ

запросить, чтобы сервер завершил потоковую передачу в указанное абсолютное время (формат: «ГГГГММДДТЧЧММССЗ» или «ГГГГММДДТЧЧММСС.долиZ») (используется только с -U АБСОЛЮТНОЕ-ВРЕМЯ)

-f ЧАСТОТА

укажите частоту кадров видео (используется только с «-q», «-4» или «-i»)

-F ПРЕФИКС ФАЙЛА

укажите префикс для каждого имени выходного файла

-g USER-AGENT

укажите имя пользовательского агента для использования в исходящих запросах

-h ВЫСОТА

укажите высоту видеоизображения (используется только с «-q», «-4» или «-i»)

-H

выводит «подсказку» QuickTime для каждой аудио/видеодорожки (используется только с «-q» или «-4»)

-i

вывести файл в формате ‘.avi’ (в ‘stdout’, если также не задана опция «-P ИНТЕРВАЛ-В-СЕКУНДАХ»)

-I ИНТЕРФЕЙС-ИЛИ-IP

указать конкретный сетевой интерфейс для получения данных

-k ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ

укажите имя пользователя и пароль, необходимые для аутентификации входящей команды «REGISTER» (используется только с «-R»)

-K

Периодически отправляйте команду RTSP «OPTIONS», чтобы поддерживать соединение. (Это полезно для серверов с ошибками, которые вместо этого не слушают наши периодические пакеты RTCP «RR».)

-l

попытаться компенсировать потерю пакетов (используется только с «-q», «-4» или «-i»)

-m

выводить каждый входящий кадр в отдельный файл

-M ПОДТИП MIME

укажите подтип MIME динамического формата полезной нагрузки RTP, который аудиокодек запрашивает у сервера (только «playSIP»)

-n

получать уведомление, когда начинают поступать пакеты данных RTP

-o

запросить возможные параметры команды сервера, не отправляя «DESCRIBE» (только «openRTSP»)

-O

не запрашивать возможные команды сервера; просто отправить «DESCRIBE» (только «openRTSP»)

-p НАЧАЛЬНЫЙ-ПОРТ

укажите номер(а) клиентского порта

-P ИНТЕРВАЛ-СЕКУНДЫ

записывать новые выходные файлы каждые ИНТЕРВАЛ-В-СЕКУНДАХ секунд

-q

вывести файл формата QuickTime ‘.mov’ (в ‘stdout’, если также не задана опция «-P ИНТЕРВАЛ-В-СЕКУНДАХ»)

-Q

выводить статистику QOS о потоке данных (при выходе из программы)

-r

воспроизводить потоки RTP, но не получать их самостоятельно

-R (или -R ПОРТ)

ожидать входящей команды «REGISTER» с указанием URL «rtsp://» для воспроизведения. Этот параметр используется вместо URL-адреса «rtsp://» в командной строке. (только «openRTSP»)

-s НАЧАЛО

запросить у сервера поиск указанного времени (в секундах) перед потоковой передачей

-S БАЙТЫ-СДВИГА

предполагать простой формат полезной нагрузки RTP (пропуск специального заголовка указанного размера)

-t

передавать данные RTP/RTCP через TCP, а не через (обычный) UDP. (только «openRTSP»)

-T ПОРТ

как «-t», за исключением использования туннелирования RTSP через HTTP. (только «openRTSP»)

-u ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ

укажите имя пользователя и пароль для дайджест-аутентификации

-U ПОЛНОЕ-ВРЕМЯ

запросить у сервера поиск указанного абсолютного времени (формат: «ГГГГММДДТЧЧММССЗ» или «ГГГГММДДТЧЧММСС.доляZ») перед потоковой передачей

-v

воспроизводить только видеопоток (в ‘stdout’, если также не задана опция «-P ИНТЕРВАЛ-В-СЕКУНДАХ»)

-V

печатать менее подробный диагностический вывод

-w ШИРИНА

укажите ширину видеоизображения (используется только с «-q», «-4» или «-i»)

-y

попробовать синхронизировать аудио и видео треки (используется только с «-q» или «-4»)

-z СКОРОСТЬ

запросить, чтобы сервер масштабировал поток (ускоренная перемотка вперед, медленное или обратное воспроизведение)

Опции ‘Trick play’

Серверы RTSP могут дополнительно поддерживать операции «специализированного воспроизведения» в потоке — в частности, возможность поиска определённого времени в потоке и/или возможность воспроизведения потока в ускоренном, медленном или обратном воспроизведении.

Используйте параметр «-s НАЧАЛЬНОЕ-ВРЕМЯ», чтобы запросить запуск потока на второй отметке НАЧАЛЬНОЕ-ВРЕМЯ (по умолчанию: 0,0). Используйте параметр «-z СКОРОСТЬ», чтобы запросить ускоренное воспроизведение вперёд (СКОРОСТЬ > 1.0), медленное воспроизведение (0 < СКОРОСТЬ < 1.0) или обратное воспроизведение (СКОРОСТЬ < 0.0). (Значение по умолчанию 1.0: нормальное воспроизведение.)

Важно отметить, что многие, если не большинство серверов RTSP не поддерживают операции «специализированного воспроизведения» или могут поддерживать их только для некоторых типов носителей. Фактические НАЧАЛЬНОЕ-ВРЕМЯ и СКОРОСТЬ, выбранные сервером, будут показаны в ответе сервера на команду RTSP «PLAY».

Управляющие команды протокола

По синтаксису и операциям протокол RTSP похож на HTTP. Однако между протоколами RTSP и HTTP есть ряд существенных различий. Одно из основных заключается в том, что в первом и сервер, и клиент способны генерировать запросы. Например, видеосервер может послать запрос для установки параметров воспроизведения определенного видеопотока. Далее, протоколом RTSP предусматривается, что управление состоянием или связью должен осуществлять сервер, тогда как HTTP вообще никакого отношения к этому не имеет. Наконец, в RTSP данные могут передаваться вне основной полосы (out-of-band) другими протоколами, например RTP, что невозможно в случае HTTP. RTSP-сообщения посылаются отдельно от мультимедийного потока. Для них используется соединение по специальному порту, по умолчанию с номером 554.

Запрос на сервер посылается в текстовом виде в формате: «метод абсолютный_адрес контент версия_протокола«. Вместе с запросом могут быть переданы дополнительные служебные поля (на новых строчках запроса).

Пример запроса: «PLAY rtsp://server/path/test.mpg RTSP/1.0»

Real Time Streaming Protocol

Options

Возвращает список поддерживаемых методов (OPTIONS, DESCRIBE и т.д.)

C->S:  OPTIONS rtsp://example.com/media.mp4 RTSP/1.0
       CSeq: 1
       Require: implicit-play
       Proxy-Require: gzipped-messages
S->C:  RTSP/1.0 200 OK
       CSeq: 1
       Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

Describe

Запрос описания контента, описывает каждый трек в формате SDP

C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 2
S->C: RTSP/1.0 200 OK
      CSeq: 2
      Content-Base: rtsp://example.com/media.mp4
      Content-Type: application/sdp
      Content-Length: 460
      m=video 0 RTP/AVP 96
      a=control:streamid=0
      a=range:npt=0-7.741000
      a=length:npt=7.741000
      a=rtpmap:96 MP4V-ES/5544
      a=mimetype:string;"video/MP4V-ES"
      a=AvgBitRate:integer;304018
      a=StreamName:string;"hinted video track"
      m=audio 0 RTP/AVP 97
      a=control:streamid=1
      a=range:npt=0-7.712000
      a=length:npt=7.712000
      a=rtpmap:97 mpeg4-generic/32000/2
      a=mimetype:string;"audio/mpeg4-generic"
      a=AvgBitRate:integer;65790
      a=StreamName:string;"hinted audio track"

Setup

Запрос установки соединений и транспорта для потоков.

C->S: SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0
      CSeq: 3
      Transport: RTP/AVP;unicast;client_port=8000-8001
S->C: RTSP/1.0 200 OK
      CSeq: 3
      Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=1234ABCD
      Session: 12345678

Play

Старт вещания.

C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 4
      Range: npt=5-20
      Session: 12345678
S->C: RTSP/1.0 200 OK
      CSeq: 4
      Session: 12345678
      RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=9810092;rtptime=3450012

Teardown

Остановка вещания.

C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 8
      Session: 12345678
S->C: RTSP/1.0 200 OK
      CSeq: 8

Record

Запрос на записывание контента сервером

C->S: RECORD rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 6
      Session: 12345678
S->C: RTSP/1.0 200 OK
      CSeq: 6
      Session: 12345678

GET_PARAMETER

Запрос GET_PARAMETER извлекает значение параметра, заданного в URI.

S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 9
      Content-Type: text/parameters
      Session: 12345678
      Content-Length: 15
      packets_received
      jitter
C->S: RTSP/1.0 200 OK
      CSeq: 9
      Content-Length: 46
      Content-Type: text/parameters
      packets_received: 10
      jitter: 0.3838

SET_PARAMETER

Установка параметров сервера

C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 10
      Content-length: 20
      Content-type: text/parameters
      barparam: barstuff
S->C: RTSP/1.0 451 Invalid Parameter
      CSeq: 10
      Content-length: 10
      Content-type: text/parameters
      barparam

Redirect

Перенаправление на другой контент.

S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 11
      Location: rtsp://bigserver.com:8001
      Range: clock=19960213T143205Z-

Как привязать видеорегистратор или камеру EZVIZ, Hikvision и Safire к хабу

Если в вашей системе видеонаблюдения используется видеорегистратор, есть два способа добавления видеопотока в приложения Ajax:

Привязка видеорегистратора — в приложении доступны все потоки камер видеорегистратора, между которыми можно переключаться в приложении. При этом видеорегистратор занимает один слот в пределах лимита хаба (10 камер/видеорегистраторов у Hub, 25 у Hub 2, 50 у Hub Plus и 100 у Hub 2 Plus).

Привязка отдельных камер видеорегистратора — вы сами определяете, потоки каких камер видеорегистратора доступны пользователям хаба. Каждая камера отображается как отдельное устройство и занимает слот в пределах лимита хаба.

Для привязки видеорегистратора / камеры в приложении Ajax:

  1. Перейдите во вкладку Устройства .
  2. Выберите Добавить камеру.
  3. Выберите Hikvision или Safire.

    Если вы еще не вошли в учетную запись EZVIZ — откроется экран логина. Войдите в учетную запись и повторите попытку добавления камеры или видеорегистратора.

  4. Укажите:
    • имя камеры или видеорегистратора
    • комнату
    • камеру или видеорегистратор из списка
    • код верификации (пароль от камеры или видеорегистратора), если при настройке устройства видеонаблюдения задан пароль
  5. Нажмите Добавить.

Если устройство видеонаблюдения не привязано к учетной записи EZVIZ — его необходимо привязать. Это можно сделать как через приложения производителя, так и в нашем приложении через меню Добавить камеру (Настройки приложения → Видеонаблюдение → Hikvision или Safire).

Для просмотра видеопотока, нажмите на иконку потока в приложении Ajax.

Чтобы развернуть поток на весь экран — смените ориентацию смартфона. Видео можно поставить на паузу и сделать скриншот.

Как получить поток RTSP с камеры

Чтобы просматривать видео и захватывать звук посредством этой технологии, необходима поддержка RTSP на стороне камеры. Этот протокол поддерживают многие образцы имеющихся на рынке устройств, но в документации возможность описана не всегда.

Если поддержка заявлена, то в инструкции будут прописаны настройки для доступа к трансляции. Они представляют собой ссылку для подключения в следующем формате:

Здесь rtsp — указание на протокол подключения, addr — IP-адрес камеры. Через двоеточие указан порт. Последний может отличаться, если в настройках указан отличный от «дефолтного».

Далее следуют user и password — логин пользователя и пароль для подключения (их может и не быть). После них указываются дополнительные параметры, который у разных камер могут отличаться.

Как настроить сетевое оборудование

Хотя процесс настройки схож во многих роутерах, названия параметров и настроек у разных производителей могут отличаться. Прежде чем приступать к настройке, ознакомьтесь с инструкциями к оборудованию. В статье камера будет подключаться к роутеру TP-Link (модель: TL-WR842N, версия прошивки: 150921).

Если вы подключаете IP-камеру внутри корпоративной сети — обратитесь к вашему системному администратору. Он поможет с настройкой.

  1. Резервирование IP-адреса за камерой.
  2. Перенаправление сетевых портов.

Как присвоить IP-адрес камере

Существует два способа присвоить камере постоянный IP-адрес:

  1. В настройках роутера
  2. В настройках камеры

В примере мы разберём первый способ.

Прежде чем приступить к резервированию IP-адреса, включите DHCP в настройках вашей IP-камеры. Процедура описана в инструкции производителя.

Процесс резервирования IP-адреса:

1. Подключите к камере кабель питания и сетевой кабель роутера.

2. Напишите в адресной строке браузера IP-адрес вашего роутера, чтобы перейти в его настройки.

IP-адрес роутера может зависеть как от настроек сети, так и от модели сетевого оборудования. Как правило, IP-адрес указан в документации вашего роутера (чаще всего это 192.168.0.1 или 192.168.1.1). Узнать его можно и с компьютера или ноутбука, подключенного к вашей сети.

Как узнать IP-адрес роутера в Windows

1. Откройте командную строку

Первый способ: одновременно нажмите WIN и R , введите cmd и нажмите Enter.

Второй способ: войдите в меню Пуск, введите в поле поиска командная строка и выберите её в результатах поиска.

2. Введите команду ipconfig и нажмите Enter. IP-адрес роутера будет указан в строке Основной шлюз.

Как узнать IP-адрес роутера в macOS
  1. Откройте Системные настройки.
  2. Выберите меню Сеть и нажмите кнопку Дополнительно.
  3. Откройте вкладку TCP/IP. IP-адрес вашего роутера указан в строке Маршрутизатор.

При входе в настройки роутер запросит логин и пароль. Они указываются в инструкции, на коробке или корпусе устройства.

3. Перейдите в настройки DHCP. Если DHCP выключен — включите функцию и перезагрузите роутер.

4. Перейдите в DHCP Client List. Вы увидите список подключенных к роутеру устройств. В нем необходимо определить вашу камеру и скопировать её MAC-адрес.

В большинстве случаев камера подписана Unknown или имеет название модели или марки производителя.

5. Перейдите в меню Address Reservation и нажмите Add New. Вставьте МАС-адрес камеры и задайте ей IP-адрес. Чтобы избежать конфликтов IP-адресов мы рекомендуем зарезервировать за камерой тот IP-адрес, который был выдан ей роутером автоматически. Учитывайте, что при подключении нескольких камер необходимо резервировать IP-адрес для каждой из них.

Резервирование IP-адреса необходимо, чтобы IP-адрес камеры не менялся после её переподключения или перезагрузки роутера.

6. Перезагрузите или переподключите к роутеру IP-камеру. Теперь она имеет статический IP-адрес внутри вашей сети.

Как перенаправить сетевые порты

Если у вашего оборудования есть функция UPnP — включите её в настройках IP-камеры и роутера. После этого порты будут перенаправлены автоматически.

Как включить функцию UPnP на роутере TP-link
  1. Перейдите в настройки роутера.
  2. Выберите категорию Forwarding.
  3. Перейдите во вкладку UPnP и нажмите Enable, если опция была отключена.

1. В настройках роутера перейдите в раздел Forwarding. Выберите Port Triggering и нажмите Add New.

2. Укажите сетевые порты: внутренний (который используется камерой внутри сети, значение указано в инструкции производителя) и внешний (который будет доступен из внешнего мира).

Не рекомендуется использовать такие сетевые порты: 20, 21, 22, 53, 80, 110, 138, 139, 443, 3306, 3128, 3389, 5900, так как они чаще всего используются различными служебными сервисами.

Учитывайте, что внешний порт должен быть доступным (открытым в настройках роутера и не занятым каким-либо сервисом). Проверить это можно при помощи онлайн-сервисов, например: 2ip.ru. Если у вас возникли проблемы с определением открытого порта — обратитесь к вашему интернет-провайдеру.

По умолчанию IP-камеры используют 554 порт, но номер порта может отличаться у разных производителей. Точное значение можно узнать в инструкции устройства.

3. Сохраните настройки и перезагрузите роутер. Порты перенаправлены.

При подключении нескольких IP-камер для каждой из них необходимо выделить и настроить свои сетевые порты.

Для чего нужен протокол RTSP?

Название протокола RTSP переводится управление в онлайн-режиме. Таким образом, Real Time Streaming Protocol помогает наладить управление потоковым видео онлайн. Данный протокол очень часто используется в IP-видеонаблюдении, поскольку там есть описание необходимых команд.

RTSP-протокол позволяет собственнику камеры слежения решать несколько важных функций:

  • транслировать данные при помощи VLC;
  • транслировать видео на свои ресурсы и площадки;
  • настраивать NVR-видеорегистраторы;
  • соединять камеру видеонаблюдения с виртуальным хранилищем;
  • добавлять видеокамеру в мобильные приложения на базе Android или iOS.

При этом открыть RTSP-поток многим пользователям систем видеонаблюдения не очень просто и достаточно затруднительно.

Узнаем адрес RTSP камеры видеонаблюдения

Есть несколько вариантов, которые позволяют узнать RTSP поток видеокамеры, когда он не указан в соответствующей инструкции.

Большое количество IP-видеокамер, которые продаются в России, в своём составе имеют китайские элементы XMEye. Данные комплектующие можно заметить даже у отечественных производителей таких камер, как Vesta, HiQ, SVplus и подобных. Камера подобных моделей будет иметь следующий формат RTSP-потока:

rtsp://192.168.132.32:554/user=admin&password=12345&channel=1&stream=0.cgi

В данном адресе присутствуют такие составляющие, как:

  • 192.168.132.32 – непосредственно IP-адрес устройства;
  • 554 – порт протокола (по умолчанию он имеет номер 554, но этот параметр можно поменять в настройках устройства);
  • admin – логин камеры видеонаблюдения;
  • 12355 – пароль от логина пользователя.

В том случае, когда в IP-видеокамере присутствуют другие комплектующие, необходимо будет воспользоваться одним из двух перечисленных ниже вариантов.

Для начала нужно будет скачать программу под названием One Device Manager. После установки данный софт поможет узнать RTSP-адрес.

Как правило, большинство видеокамер обладает поддержкой onvif-протокола, поэтому при эксплуатации программного обеспечения затруднений возникнуть не должно. Важный нюанс – для правильно работы необходимо подсоединить ноутбук или компьютер, куда будет установлена программа, а также само IP-устройство к одной и той же локальной сети.

В сети можно найти целые списки, где содержатся адреса RTSP-потоков, поскольку эти данные зависят от того, какой именно бренд выпускает камеру видеонаблюдения.

Как открыть RTSP-поток в видеокамере?

Когда адрес RTSP-потока становится известен владельцу системы слежения, он может получать видеоинформацию с IP-камеры. Для того, чтобы открыть трансляцию потокового видео, необходимо будет выполнить следующий перечень шагов:

  • установить для видеокамеры постоянный IP-адрес и заказать его у поставщика интернета;
  • перебросить на RTSP-порт локальные запросы, поступающие с видеокамеры;
  • пройти проверку работоспособности.

Статический адрес можно настроить можно при помощи программы IP Hunter или же связаться с провайдером и попросить его обеспечить в качестве дополнительной опции постоянный адрес IP. После этого нужно настроить переадресацию и пробросить порты на RTSP-порт с локальных портов видеокамеры. Затем можно переходить к проверке потока.

Чтобы понять, обладает ли RTSP-ссылка работоспособностью, можно открыть VLC-плеер и сделать там проверку. Для этого в главном меню плеера нужно нажать на категорию «Медиа» и выбрать пункт «Открыть URL». Далее потребуется перейти на вкладку «Сеть» окошка «Источник» и указать свою ссылку.

Другие статьи:

    • Настройка камеры Optimus
    • Настройка IP-камеры через роутер
    • Тепловизионные камеры видеонаблюдения
    • Основные принципы при проектировании системы видеонаблюдения

Интеграция по протоколу RTSP.

RTSP (Real Time Streaming Protocol) — потоковый протокол реального времени, предназначенный для использования в системах, работающих с мультимедиа данными. Протокол позволяет передавать видеоизображение и звук. Передача звука зависит от возможностей и конкретной реализации оборудования и ПО. Для получения изображения от камеры в соответствующем меню оборудования или ПО необходимо ввести команду. Команды для получения видео и звука различаются, и имеют следующие форматы:

Получение видео: rtsp:// логин  пароль @ ip-адрес камеры  порт камеры / live / кодек  разрешение

Получение видео и звука: rtsp:// логинпароль @ ip-адрес камеры порт камеры / live / кодек_ulaw / разрешение

Варианты кодеков: H.264, MPEG4, MJPEG.

Разрешения: 1080p (1920×1080), SXGA(1280×1024), 720P(1280×720), VGA(640×480),  QVGA (320×240).

Примеры:  rtsp://admin:admin@192.168.0.10:88/live/h264/vga  или  rtsp://user:parol@192.168.0.10:88/live/mjpeg_ulaw/sxga

Протокол RTSP поддерживает большинство производителей профессионального IP видеооборудования и ПО. По RTSP протоколу вы можете получить изображение используя компьютерные медиа проигрыватели, такие как Windows Media Player, QuickTime, Skype, Winamp, VLC media player, RealPlayer и многие другие.

Способ 6 — Websockets

WebRTC и Flash не покрывают все браузеры и платформы. Например, в браузере iOS Safari эти технологии не поддерживаются.

На iOS Safari можно доставить видеопоток по транспорту Websocket (TCP соединению между браузером и сервером). В этот туннель можно завернуть сконвертированный с RTSP видеопоток. После того, как бинарные данные придут их можно декодировать с помощью JavaScript и отрисовать на Canvas HTML5-элементе.

Именно этим занимается Websocket — плеер при работе в браузере iOS Safari, а его код снаружи выглядит также:

var session = Flashphoner.createSession({urlServer:"wss://192.168.88.59:8443"});
session.createStream({name:"rtsp://192.168.88.5/live.sdp", display:myVideo}).play();

Это чем-то похоже на подход с флэшкой, когда под HTML5 лежит swf-элемент. В данном случае, под HTML5-страницей лежит не swf-объект, а JavaScript-приложение, которое тянет данные по вебсокетам, декодирует и отрисовывает на Canvas в нескольких потоках.

Так выглядит RTSP поток на Canvas в браузере iOS Safari

RTSP потоки для Beward

IP-домофоны DS03M(P)
rtsp://<IP адрес>:<порт>/av0_<номер_потока> <IP адрес> – IP адрес домофона <порт> – RTSP-порт камеры (по умолчанию 554)
<номер_потока> – число 0 или 1 (0 – основной поток, 1 – альтернативный)
B серия
B10xx, B2.9xx, B1720
rtsp://<IP адрес>:<порт> <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
rtsp://<IP адрес>:<порт>/av0_<номер_потока> <номер_потока> – число 0 или 1 (0 – основной поток, 1 – альтернативный)
В1710хх, В2710хх, В2720хх
rtsp://<IP адрес>:<порт>/av0_<номер_потока> <номер_потока> – число 0 или 1 (0 – основной поток, 1 – альтернативный)
B1001, B1012, B1014, B1018
rtsp://<IP адрес>:<порт>/av<номер_канала>_<номер_потока> <номер_канала> – число от 0 до 3,
определяющее канал,
с которого будет выдан видеопоток (0 – 1-й канал, 1 – 2-й канал и т.д.)
<номер_потока> – число 0 или 1
(0 – основной поток, 1 – альтернативный)
SV серия
Запрос изображения
http://<IP адрес>/snapshot.cgi <IP адрес> — IP адрес камеры
Запросы видеопотока
Основной:
rtsp://<IP адрес>:<порт>/main
<IP адрес> — IP адрес камеры
<порт> — RTSP-порт (по умолчанию 554)
Дополнительный:
rtsp://<IP адрес>:<порт>/sub
Третий:
rtsp://<IP адрес>:<порт>/third
BD серия
Запрос первого потока видео в формате H.264
rtsp://<IP адрес>:<порт>/h264 <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
Запрос 2, 3 или 4 потока видео в формате H.264
rtsp://<IP адрес>:<порт>/h264_<номер_потока> <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
<номер_потока> – число от 2 до 4
Запрос видео в формате MPEG4
rtsp://<IP адрес>:<порт>/mpeg4 <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
Запрос видео в формате MJPEG
rtsp://<IP адрес>:<порт>/jpeg <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
http://<IP адрес>:<порт> <порт> – MJPEG-порт к HTTP камеры
(по умолчанию 8008)
<IP адрес> – IP адрес камеры
Запрос изображения
http://<IP адрес>:<порт>/cgi-bin/jpg/image.cgi <порт> – HTTP-порт (по умолчанию 80)
<IP адрес> – IP адрес камеры
N серия
Запрос видео (N37210, N132xx, N1xx, N3xx, N5xx, N6xx)
rtsp://<IP адрес>:<порт>/video.pro<N> <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
<N> – номер профиля
Запрос видео в формате H.264 (N131xx, N35110)
rtsp://<IP адрес>:<порт>/video.h264 <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
Запрос видео в формате MP4 (N1000, N1250, N131xx, N66xx, N35110)
rtsp://<IP адрес>:<порт>/video.mp4 <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
Запрос видео в формате MJPG (N1000, N1250, N131xx, N66xx, N35110)
rtsp://<IP адрес>:<порт>/video.mjpg <порт> – RTSP-порт камеры (по умолчанию 554)
<IP адрес> – IP адрес камеры
Запрос изображения (N1000, N1250, N131xx, N66xx, N35110)
http://<IP>/jpg/image.jpg <IP адрес> – IP адрес камеры

Результаты

Подведем итоги и объединим полученные результаты в табличку:

 
Способ отображения
Применение
Задержка
1
RTMP
Там, где важно использование legacy — флэш клиента, Flex или Adobe Air
medium
2
RTMP + HTML5
В браузерах IE, Edge, Mac Safari, если там установлен Flash Player
medium
3
RTMFP
Там, где важно использование legacy — флэш клиента, Flex или Adobe Air и важна низкая задержка
low
4
RTMFP + HTML5
В браузерах IE, Edge, Mac Safari, если там установлен Flash Player и важна низкая задержка.
low
5
WebRTC
В браузерах Chrome, Firefox, Opera на десктопах и мобильных браузерах под Android, где важна real-time задержка.
real-time
6
Websocket
В браузерах, где нет Flash и WebRTC, но нужна средняя или низкая задержка.
medium
7
HLS
Во всех браузерах. Где не важна задержка.
high
8
Android app, WebRTC
В нативных мобильных приложениях  под Android, где требуется real-time задержка.
real-time
9
iOS app, WebRTC
В нативных мобильных приложениях  под iOS, где требуется real-time задержка.
real-time. Для тестирования мы использовали сервер Web Call Server 5, который конвертирует RTSP поток для раздачи в 9 перечисленных направлениях

Для тестирования мы использовали сервер Web Call Server 5, который конвертирует RTSP поток для раздачи в 9 перечисленных направлениях.

Способ 8 — Android приложение, WebRTC

Приложение забирает поток с сервера по WebRTC. Задача сервера в этом случае — сконвертировать RTSP в WebRTC и скормить мобильному приложению.

Java-код плеера для Android находится здесь и выглядит так:

SessionOptions sessionOptions = new SessionOptions("wss://192.168.88.59:8443");
Session session = Flashphoner.createSession(sessionOptions);
StreamOptions streamOptions = new StreamOptions("rtsp://192.168.88.5/live.sdp");
Stream playStream = session.createStream(streamOptions);
playStream.play();

Тестовое мобильное приложение плеера можно установить из Google Play, а исходники приложения скачать здесь.

Так выглядит воспроизведение RTSP потока по WebRTC на планшете Asus под Android:

Опции продолжительности воспроизведения

Если описание SDP (с сервера RTSP) содержит атрибут «a=range:npt= …», определяющий продолжительность потока, то программа закроет сеанс и выйдет вскоре после этого (по умолчанию через 5 секунд после того, как это время истекает).

Вы можете изменить эту продолжительность, используя опцию «-d ДЛИТЕЛЬНОСТЬ». Если ДЛИТЕЛЬНОСТЬ положительна, это общее количество секунд потока, которое будет воспроизведено перед закрытием сеанса и выходом. Если ДЛИТЕЛЬНОСТЬ отрицательна, то -ДЛИТЕЛЬНОСТЬ даёт количество дополнительных секунд для задержки после времени, указанного в атрибуте SDP «a=range». (Как отмечалось выше, значение по умолчанию для этого дополнительного времени составляет 5 секунд.)

Например, если описание SDP содержит «a=range:npt=0-25», то «-d 10» означает «воспроизвести поток(и) в течение 10 секунд, затем выйти», а «-d -10» означает «воспроизвести поток(и) в течение 35 секунд, затем выйти».

Вы также можете использовать опцию «-D МАКСИМАЛЬНЫЙ-РАЗРЫВ-МЕЖДУ-ПАКЕТАМИ», чтобы запросить завершение работы программы, если в течение периода не менее МАКСИМАЛЬНЫЙ-РАЗРЫВ-МЕЖДУ-ПАКЕТАМИ секунд не было получено новых входящих пакетов RTP (т. е. данных). Эта опция полезна, если вы запускаете программу автоматически (например, из сценария) и хотите учесть возможность неожиданной остановки серверов

(Обратите внимание, что «-d» и «-D» это разные параметры, и оба могут использоваться одновременно.)

Однако обратите внимание, что если программа получает пакет RTCP «BYE» от источника — для каждого потока в сеансе — тогда программа закроет сеанс и выйдет немедленно, независимо от использования «-d» и/или опции «-D».

Вы также можете использовать опцию «-c» для непрерывного воспроизведения сеансов мультимедиа. То есть по истечении времени окончания программа запускается заново, выдавая ещё один набор запросов «PLAY»

(Обратите внимание: если вы получаете данные (т.е. вы не используете опцию «-r»), это означает, что вы получите несколько копий данных в выходных файлах.)

Обратите внимание, что вы можете комбинировать «-c» с «-d ДЛИТЕЛЬНОСТЬ» и/или «-D МАКСИМАЛЬНЫЙ-РАЗРЫВ-МЕЖДУ-ПАКЕТАМИ». Так, например, «-c -d 10» означает «воспроизвести поток(и) в течение 10 секунд, затем вернуться и воспроизвести их снова в течение ещё 10 секунд и т

д. и т. д.»

Реализации

Сервер

  • Darwin Streaming Server : версия QuickTime Streaming Server с открытым исходным кодом, поддерживаемая Apple.
  • Фэн : Экономичный и средний потоковый сервер с упором на соответствие RFC.
  • Сервер и клиент RTSP на основе GStreamer .
  • Сервер Helix DNA : потоковый сервер RealNetworks . Поставляется как с открытым исходным кодом, так и с проприетарными версиями.
  • Helix Universal Server : коммерческий сервер потоковой передачи RealNetworks для клиентов потокового мультимедиа RTSP, RTMP, iOS, Silverlight и HTTP.
  • LIVE555 liveMedia / openRTSP : серверные и клиентские библиотеки C ++ с открытым исходным кодом, используемые в известных клиентах, таких как VLC и mplayer .
  • Движение : бесплатное приложение для видеонаблюдения для Linux.
  • Nimble Streamer поддерживает ввод с извлечением и объявлением по протоколу RTSP с чередованием вывода воспроизведения по протоколу TCP.
  • pvServer : ранее называвшийся PacketVideo Streaming Server, это продукт для потокового сервера Alcatel-Lucent.
  • QuickTime Streaming Server : потоковый сервер Apple с закрытым исходным кодом, который поставляется с Mac OS X Server.
  • VideoLAN : медиаплеер с открытым исходным кодом и потоковый сервер.
  • Wowza Streaming Engine : многоформатный потоковый сервер для RTSP / RTP, RTMP , MPEG-TS , ICY, HTTP ( HTTP Live Streaming , , Smooth Streaming , ), WebRTC
  • В июне 2007 года YouTube внедрил мобильный веб- интерфейс, который обслуживает видео по этому протоколу.

Многие камеры видеонаблюдения / безопасности, часто называемые IP-камерами , также поддерживают потоковую передачу RTSP, особенно с профилями ONVIF G, S, T.

Клиент

  • Астра
  • cURL (начиная с версии 7.20.0–9 февраля 2010 г.)
  • FFmpeg
  • GStreamer
  • JetAudio
  • LIVE555 liveMedia / openRTSP : серверные и клиентские библиотеки C ++ с открытым исходным кодом, используемые в известных клиентах, таких как VLC и mplayer .
  • Классический медиаплеер
  • MPlayer
  • MythTV через Freebox
  • QuickTime
  • Реальный игрок
  • Skype
  • Spotify
  • Медиаплеер VLC
  • Winamp
  • Проигрыватель Windows Media
  • xine
  • ZoneMinder
  • Motion_ (программное обеспечение для наблюдения)

Потоковая передача сеансов с контролем доступа

Некоторые серверы RTSP требуют аутентификации пользователя (с помощью имени и пароля) перед потоковой передачей сеанса. Для потоковой передачи такого сеанса используйте параметр «-u ПОЛЬЗОВАТЕЛЬ ПАРОЛЬ». (Чтобы указать пустой пароль, используйте «» вместо ПАРОЛЬ.) Программа аутентифицируется с использованием «дайджест-аутентификации» RTSP; пароль не будет отправлен в открытом виде по сети.

В качестве альтернативы вы можете попробовать включить имя пользователя и пароль в URL-адрес, например: «rtsp://ПОЛЬЗОВАТЕЛЬ:ПАРОЛЬ@ХОСТ:ПРОЧЕЕ». (Однако в этом случае пароль будет отправлен в открытом виде по сети. Кроме того, не все серверы будут принимать этот тип URL-адреса.)

Что нужно выяснить до подключения RTSP камеры?

Поддерживает ли камера RTSP протокол

Как правило, эта информация указана на сайте производителя в характеристиках устройства. Если такая информация отсутствует — воспользуйтесь онлайн-сервисами. Например, http://www.ispyconnect.com/:

  1. Выберите производителя камеры.
  2. Найдите вашу модель устройства. Если устройства нет в списке, оно не поддерживает этот протокол и подключить её к системе безопасности Ajax при помощи RTSP ссылки не получится.

Предоставляет ли ваш интернет-провайдер внешний статический IP-адрес

Чтобы вы имели возможность просмотреть видео с камеры из любой точки мира, вам необходимо иметь внешний IP-адрес. Внешний IP-адрес может быть постоянным или динамическим. Мы рекомендуем использовать постоянный IP-адрес, так как при смене динамического IP-адреса меняется RTSP-ссылка камеры. Из-за этого видео с камеры будет недоступно для просмотра до генерации новой RTSP-ссылки. Информацию о внешнем IP-адресе вам предоставит интернет-провайдер.

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

Если ваш интернет-провайдер не предоставляет внешний статический IP-адрес или вас не устраивают его условия — воспользуйтесь DDNS сервисами. Они позволяют просматривать поток камер из любой точки мира, даже если у вас нет внешнего статического IP-адреса.

Способ 1 — RTMP

RTMP протокол браузеры не поддерживают, но его поддерживает старый добрый Flash Player, который работает неплохо, хоть и не во всех браузерах, и может отобразить видеопоток.

Код плеера в этом случае будет построен на Action Script 3 и выглядеть примерно так:

var nc:NetConnection = nc.connect("rtmp://192.168.88.59/live",obj);
var subscribeStream:NetStream = new NetStream(nc);
subscribeStream.play("rtsp://192.168.88.5/live.sdp");

В этом примере:

rtmp://192.168.88.59/live — это адрес промежуточного сервера, который заберет RTSP видеопоток с камеры и конвертирует его в RTMP
rtsp://192.168.88.5/live.sdp — это RTSP адрес самой камеры.

Немного избыточный вариант кода плеера на Flex и AS3 доступен здесь.

Выглядит это так:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector