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

Способ 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

Разница между протоколами RSTP, RTMP и HTTP.

  1. HTTP обрабатывает данные как файлы, поэтому HTTP не является протоколом потокового мультимедиа, а RTMP и RTSP — протоколами потокового мультимедиа.
  2. RTMP является проприетарным протоколом Adobe и полностью не раскрывается.RTSP и HTTP являются общими протоколами.
  3. RTMP обычно передает потоки в формате flv, f4v, RTSP передает потоки в формате ts, MP4, а HTTP не имеет определенного потока.
  4. RTSP обычно требует 2-3 канала. Каналы данных и команд разделены. RTMP и HTTP передают команды и данные по одному и тому же каналу.

Два, RTSP

RTSP используется для управления установленной передачей медиапотоков и играет роль «удаленного управления сетью» для мультимедийных услуг. Хотя иногда управляющая информация RTSP и поток медиаданных могут чередоваться и передаваться, в целом сам RTSP не используется для передачи данных медиапотока. Передача мультимедийных данных может осуществляться через такие протоколы, как RTP / RTCP.

Описание технологии

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

IP-камера.

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

Это краткое описание опций для команд 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 СКОРОСТЬ

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

Процесс работы RTMP

Для воспроизведения потокового мультимедиа по протоколу RTMP необходимо выполнить следующие шаги: рукопожатие, установить соединение, установить поток и воспроизвести.

1. Рукопожатие

  1. Рукопожатие начинается, когда клиент отправляет блоки C0 и C1. Сервер отправляет S0 и S1 после получения C0 или C1.
  2. Когда клиент получает все S0 и S1, он начинает отправлять C2. Когда сервер получает C0 и C1, он начинает отправлять S2.
  3. Когда клиент и сервер получают S2 и C2 соответственно, рукопожатие завершается.

2. Установите сетевое соединение (NetConnection).

  1. Клиент отправляет серверу «connect» в командном сообщении, запрашивая соединение с экземпляром приложения-службы.
  2. После того, как сервер получает сообщение с командой подключения, он отправляет клиенту протокольное сообщение «Размер подтверждения окна» (Window Acknowledgment Size) и одновременно подключается к приложению, указанному в команде подключения.
  3. Сервер отправляет клиенту сообщение протокола установленной полосы пропускания.
  4. После того, как клиент обработает сообщение протокола установленной полосы пропускания, он отправляет на сервер сообщение протокола размера подтверждения окна (Window Acknowledgment Size).
  5. Сервер отправляет клиенту сообщение «Stream Begin» в управляющем сообщении пользователя.
  6. Сервер отправляет «результат» (_result) в командном сообщении, чтобы уведомить клиента о состоянии соединения.

3. Установите сетевой поток (NetStream).

  1. Клиент отправляет на сервер команду createStream в командном сообщении.
  2. После того, как сервер получает команду «создать поток», он отправляет «результат» (_result) в командном сообщении, чтобы уведомить клиента о состоянии потока.

4. Играть

  1. Клиент отправляет на сервер команду «play» (воспроизведение) в командном сообщении.
  2. После получения команды воспроизведения сервер отправляет сообщение протокола ChunkSize.
  3. Сервер отправляет «streambegin» в пользовательском управляющем сообщении, чтобы сообщить клиенту идентификатор потока.
  4. Если команда воспроизведения выполнена успешно, сервер отправляет «статус ответа» NetStream.Play.Start и NetStream.Play.reset в командном сообщении, чтобы сообщить клиенту, что команда «play» выполнена успешно.
  5. После этого сервер отправляет аудио и видео данные для воспроизведения клиенту.

RTMP protocol FAQs

RTMP general usage

RTMP is a protocol that allows to read and publish streams, but is less versatile and less efficient than RTSP (doesn’t support UDP, encryption, doesn’t support most RTSP codecs, doesn’t support feedback mechanism). It is used when there’s need of publishing or reading streams from a software that supports only RTMP (for instance, OBS Studio and DJI drones).

At the moment, only the H264 and AAC codecs can be used with the RTMP protocol.

Streams can be published or read with the RTMP protocol, for instance with FFmpeg:

or GStreamer:

Credentials can be provided by appending to the URL the and parameters:

Publish from OBS Studio

OBS Studio can publish to the server by using the RTMP protocol. In (or in the Auto-configuration Wizard), use the following parameters:

  • Service:
  • Server:
  • Stream key:

If credentials are in use, use the following parameters:

  • Service:
  • Server:
  • Stream key:

Способы узнать адрес камеры

В руководстве пользователя некоторых IP-камер не указываются технические характеристики и способ подключения. В этой ситуации IP-адрес определяется самостоятельно. Имеются такие способы получения адреса потока:

  1. Обратиться в техническую поддержку продавца или производителя с запросом о предоставлении данной информации. В большинстве случаев способ работает.
  2. При невозможности связаться с производителем оборудования в интернете находится, загружается и устанавливается приложение Onvif Device Manager. Все IP-камеры работают с протоколом Onvif и передают ему свои настройки. ODM обрабатывает данные и выводит их пользователю, в т. ч. адрес RTSP-камеры.
  3. Данные параметры устанавливает производитель, применяя одинаковое значение. Этой особенностью можно воспользоваться, зная наименование модели или бренда. Для широко распространенной продукции HIKVISION IP-адрес по умолчанию 192.168.1.64/DHCP. Авторизация осуществляется с логином пользователя admin и таким же значением пароля — admin. Передача и запись данных осуществляются через стандартные порты 80, 443, 554, 8000.

Утилита Onvif Device Manage.

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

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

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

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

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

Способ 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:

Простой запуск

Самый простой способ запустить эту программу:

openRTSP URL

где URL — это URL-адрес RTSP для открытия (т. е. начинающийся с «rtsp://»). Программа откроет указанный URL (используя команду RTSP «DESCRIBE»), получит описание SDP сеанса, а затем для каждой аудио/видео подсессии, чей формат полезной нагрузки RTP она понимает, запустит подсессии командами «SETUP» и «PLAY».

Полученные данные для каждой части записываются в отдельный выходной файл, названный в соответствии с его типом MIME. Например, если сеанс содержит аудиоподсекцию MPEG-1 или 2 (тип полезной нагрузки RTP 14), например, MP3, и видеоподсекцию MPEG-1 или 2 (полезная нагрузка RTP 32), то данные каждой подсессии будут извлечены из входящих пакетов RTP и записаны в файлы с именами «audio-MPA-1» и «video-MPV-2» (соответственно). (Затем вам, вероятно, потребуется переименовать эти файлы — присвоив им соответствующее расширение имени файла (например, «.mp3» и «.mpg») — чтобы иметь возможность воспроизводить их с помощью обычных медиаплееров.)

Вы можете использовать опцию «-F ПРЕФИКС-ИМЕНИ-ФАЙЛА», чтобы добавить префикс к имени файла, который записывается для каждой части. (Это может быть полезно, если вы запускаете «openRTSP» несколько раз в одном каталоге для чтения данных из разных сеансов RTSP.)

Извлечение одного потока

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

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

По умолчанию программа распечатывает (в stderr) каждый полный запрос и ответ RTSP. Для менее подробного вывода используйте параметр «-V» (верхний регистр).

Как настроить маршрутизатор

Выделим два способа настройки роутера:

автоматический через UPnP (Universal Plug and Play).

Это способ подходит, если Вы не хотите разбираться в тонкостях пробросов портов.

Некоторые Wi-Fi роутеры оснащены функцией открытия портов в автоматическом режиме. Если пользователь обзавелся именно таким оборудованием, ему нужно включить эту функцию на двух устройствах: на маршрутизаторе и на видеорегистраторе. Данная функция особенно станет полезной в том случае, если владелец компании не знает данные аутентификации. Если такой функции нет, или она не срабатывает, придется делать Factory Reset.

Перед выполнением подобных действий нужно убедиться в том, что на руках наличествуют настройки от поставщика трафика. В ином случае возникнут проблемы с дальнейшим подключением к сети Интернет.

Что, если настройки маршрутизатора и регистратора уже на руках? В этом случае можно незамедлительно воспользоваться функцией UPnP. С её помощью осуществляется достаточно быстрый по времени проброс портов. Выполнить перенаправление портов вручную крайне сложно, особенно для новичка. А тем более, если пользователь добавил новые порты, которые могут конфликтовать между собой.

ручной.

Проброс портов следует прописывать в меню «Виртуальные серверы». Его можно найти в настройках роутера.

Тонкости выполнения проброса портов для удалённого видеонаблюдения

Новичку важно знать о некоторых нюансах в этом вопросе. Соблюдая некоторые рекомендации и подсказки, у пользователя не должно возникнуть проблем с настройками оборудования

Итак, что нужно знать владельцу системы?

  1. HTTP порт Wi-Fi роутера и регистратора имеет один порт по умолчанию – 80-й. Чтобы избежать конфликта между портами, нужно изменить порт видеорегистратора на 88-й. Это значит, что пользователю нужно сделать проброс 88-го порта на маршрутизаторе.
  2. Пользователь может задать одинаковый или разные внешний начальный и внутренний начальный порты. Представим ситуацию, когда пользователь задал другой внешний порт. В этом случае подключение к устройствам (к видеокамере или видеорегистратору) нужно выполнять через заданный порт. Программа CSM выполнит нужное подключение. Данный софт должен наличествовать в комплекте (при покупке регистратора).
  3. Важная рекомендация: пользователю НЕ ТРЕБУЕТСЯ задавать внешний конечный порт.
  4. Если возникает неразбериха по поводу указания внутреннего IP-адреса, то потребуется ввести адрес того устройства, к которому требуется подключиться в удалённом режиме. Не стоит забывать о том, что подобное подключение доступно не только для регистратора, но и для другого оборудования: компьютер, принтер, сетевой накопитель.
  5. Чтобы подключиться через веб-обозреватель, потребуется порт 80; Через программу CSM – порт 37777 и 37778; Через смартфон – порт 34567. Для видеорегистратора устаревшей модели скорее всего подойдет значение 554 или 654.

Настройка на примере TP-link

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

Рассмотрим на примере TP-Link.

  1. Открываем браузер, вводим IP-адрес маршрутизатора,вводим данные аутентификации (логин и пароль).
  2. В веб-интерфейсе слева нажимаем Перенаправление — Виртуальные сервера — Добавить.
  3. Добавляем виртуальный сервер. Указываем IP-адрес, порт, протокол указываем все и состояние включено.

Заключение

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

Воспроизведение без получения

Если вы хотите, чтобы программа воспроизводила сеанс RTSP, но не принимала его на самом деле, вы можете сделать это, указав программе параметр «-r» («не получать»). Это полезно, если у вас есть отдельное приложение (работающее на том же хосте), которое фактически принимает входящие медиа-сеансы

(Обратите внимание, что это отдельное принимающее приложение также должно отправлять обратно отчёты о приёме RTCP, чтобы гарантировать, что время сеанса не истечёт.)

Если вы используете опцию «-r» для воспроизведения одноадресного сеанса, вы, вероятно, также захотите использовать опцию «-p НАЧАЛЬНЫЙ-НОМЕР-ПОРТА». Эта опция сообщает программе, какие номера клиентских портов использовать в командах RTSP «SETUP», т. е. какие порты RTP/RTCP сервер должен отправлять. (Без опции «-r» программа сама принимает потоки и использует для этого свои собственные временные номера портов.) НАЧАЛЬНЫЙ-НОМЕР-ПОРТА должен быть чётным числом.

Например, если сеанс RTSP состоит из части аудио и видео (перечисленных в этом порядке в возвращённом описании SDP), то «-p 6666» приведёт к тому, что порты 6666 и 6667 будут использоваться для части аудио (6666 для RTP ; 6667 для RTCP) и порты 6668 и 6669, которые будут использоваться для подсессии видео (6668 для RTP; 6669 для RTCP).

(Если вы используете параметр «-r» для воспроизведения сеанса многоадресной рассылки, вам, вероятно, также не понадобится использовать опцию «-p НАЧАЛЬНЫЙ-НОМЕР-ПОРТА», потому что описание SDP для сеансов многоадресной рассылки обычно включает номер порта для использования.)

Способ 5 — WebRTC

В данном случае Flash не используется совсем и видеопоток проигрывается средствами самого браузера, без использования сторонних плагинов. Это работает и в Android Chrome и Android Firefox — мобильных браузерах, где Flash не установлен. WebRTC дает самую низкую задержку — менее 0.5 секунды.

Код плеера тот же:

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

Автоматически определяется поддержка WebRTC, и если поддерживается то поток играет по WebRTC.

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 адрес камеры

Вывод файла в формате «.mov», «.mp4» или «.avi»

Используйте параметр «-q» для вывода полученных данных на стандартный вывод в виде файла Apple QuickTime в формате «.mov». Каждая полученная часть будет иметь свой собственный трек в выходном файле.

Аналогично, опция «-4» создаёт файл в формате .mp4 (то есть MPEG-4).

В настоящее время эти параметры полностью поддерживаются только для ограниченного числа кодеков. Для тех кодеков, которые не полностью поддерживаются, программа по-прежнему сохранит все полученные данные в дорожке фильма, но будет использовать фиктивный атом мультимедийных данных (названный «????») в описании образца. (Эта дорожка также будет отключена.) Прежде чем вы сможете воспроизвести такую дорожку, вам необходимо отредактировать файл.

Если сеанс содержит часть видео, вы также должны использовать параметры «-w ШИРИНА», «-h ВЫСОТА» и «-f ЧАСТОТА», чтобы указать ширину и высоту (в пикселях), и частоту кадров (в секунду) соответствующей видеодорожки. (Если эти параметры опущены, используются значения ширина = 240 пикселей; высота = 180 пикселей; частота кадров = 15). Эти значения важны; если они неверны, ваш файл может вообще не воспроизводиться!

В качестве альтернативы, если описание SDP сеанса содержит атрибут уровня мультимедиа «a=x-dimensions: ШИРИНА,ВЫСОТА», то вместо этого будут использоваться эти значения (в этом случае вам не нужно использовать «-w» и «-h»). Точно так же, если описание SDP сеанса содержит атрибут уровня мультимедиа «a=x-framerate: ЧАСТОТА», то вместо этого будет использоваться это значение (в этом случае вам не нужно использовать опцию «-f»).

Если полученный файл фильма QuickTime содержит несинхронизированные аудио- и видеодорожки, то вы можете использовать параметр «-y», чтобы попытаться создать синхронизированные аудио/видеодорожки. (Этот параметр работает путём прослушивания пакетов RTCP «Sender Report», содержащих информацию о синхронизации времени — для каждого потока. Некоторые исходные несинхронизированные данные могут быть отброшены.)

Параметр «-H» также создаёт QuickTime ‘hint track’ для каждой аудио- или видеодорожки. Это полезно, если вы позже захотите стримить получившийся файл «.mov» или «.mp4».

Примечание: поддержка openRTSP для создания файлов формата QuickTime весьма ограничена. В настоящее время поддерживается только звук PCM (u-law и a-law), MPEG-4, GSM и QCELP (также известный как PureVoice), и только MPEG-4, H.263/H.263+ и H.264 видео поддерживается. (Кроме того, для создания файлов формата QuickTime с подсказками звук QCELP в настоящее время не поддерживается.)

Параметр «-i» создаёт файл в формате .avi. (Эта функция поддерживается не полностью. Поддерживается видео MPEG-1, 2 или 4, JPEG и H.263, а также необработанный звук PCM или u-law. Однако MPEG и другие аудиокодеки ещё не поддерживаются.)

Важное примечание: если вы выводите файл формата «.mov», «.mp4» или «.avi», вы должны позволить «openRTSP» работать до конца, или же завершить его чисто, сигнализировав SIGHUP или SIGUSR1. Вы не должны завершать его, используя Ctrl+c, иначе выходной файл не будет записан должным образом.

Связанная статья: Как записать видео с IP камеры (RTSP поток)

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

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

Adblock
detector