Как получить RTSP поток с IP-камеры
Установка IP камеры — удобный способ получения картинки в любом месте, где присутствует подключение к интернету. Но для работы с видеопотоком необходим соответствующий инструментарий. Существуют различные варианты поддерживаемых IP камерами протоколов трансляции, и один из самых удобных среди них — RTSP.
Что такое RTSP
Аббревиатура расшифровывается как Real Time Streaming Protocol, или потоковый протокол реального времени. Это решение прикладного уровня для работающих с мультимедийным контентом систем. Оно позволяет удаленно контролировать поток информации с медиасервера (которым может выступать IP камера), отправлять команды управления этим потоком. Также, если на сервере хранятся файлы записей, RTSP обеспечивает к ним доступ.
Сжатие в рамках RTSP не выполняется. Транспортные протоколы и способ инкапсуляции передаваемой информации он тоже не устанавливает. Упрощенно процесс выглядит следующим образом:
По умолчанию сервер RTSP работает на порту 544. Захват видео и звука можно выполнять с помощью таких программ, как плееры VLC или Windows Media Player, и иных клиентов с поддержкой протокола. Существуют также веб-приложения и программные решения для трансляции потока в интернет (например, стриминга на YouTube).
Как получить поток RTSP с камеры
Чтобы просматривать видео и захватывать звук посредством этой технологии, необходима поддержка RTSP на стороне камеры. Этот протокол поддерживают многие образцы имеющихся на рынке устройств, но в документации возможность описана не всегда.
Если поддержка заявлена, то в инструкции будут прописаны настройки для доступа к трансляции. Они представляют собой ссылку для подключения в следующем формате:
Здесь rtsp — указание на протокол подключения, addr — IP-адрес камеры. Через двоеточие указан порт. Последний может отличаться, если в настройках указан отличный от «дефолтного».
Перед выполнением дальнейших инструкций рекомендуем прочитать как узнать IP камеры видеонаблюдения.
Далее следуют user и password — логин пользователя и пароль для подключения (их может и не быть). После них указываются дополнительные параметры, который у разных камер могут отличаться.
Как узнать RTSP адрес
Ссылка может находиться в документации или явно указываться в веб-интерфейсе устройства. Если известно, что камера точно поддерживает RTSP, но параметры нигде явно не указаны, их придется выяснять:
Для последнего потребуется ПО Onvif Device Manager, компьютер под управлением Windows и сама камера.
Важно: она и ПК должны находиться в одной сети.
Device Manager умеет конфигурировать видеосервер, захватывать видео и так далее, но самая важная функция этой программы в данном случае — WS-Discovery, обнаружение устройств в сети.
Когда вы скачали и поставили программу, нужно сделать следующее:
Смотрим видео через RTSP
Самый простой способ получить rtsp поток с ip камеры — использовать проигрыватель VLC. В нем достаточно пройти в пункт меню «Медиа — Открыть URL…», перейти в появившемся диалоге на вкладку «Сеть» и вставить в строку сетевого адреса rtsp-ссылку.
Для стриминга в интернет, существуют различные способы. Один из самых доступных — использовать связку VLC и программы OBS Studio, это бесплатное и достаточно простого решения.
Существуют также онлайн-сервисы вывода изображения в интернет, например, webcam.io, и прочие. Спецификации протокола открыты, поэтому специалисты могут написать и собственный проигрыватель RTSP.
Где купить IP-видеокамеру
Видео по теме
7 способов отобразить видео с RTSP IP-камеры на веб-странице и 2 в мобильном приложении
В этой статье покажем 7 технологически разных способов отображения видеопотока с IP-камеры с поддержкой RTSP на web-странице браузера.
Браузеры, как правило, не поддерживают RTSP, поэтому поток будет конвертироваться для браузера через промежуточный сервер.
Способ 1 — RTMP
RTMP протокол браузеры не поддерживают, но его поддерживает старый добрый Flash Player, который работает неплохо, хоть и не во всех браузерах, и может отобразить видеопоток.
Код плеера в этом случае будет построен на Action Script 3 и выглядеть примерно так:
rtmp://192.168.88.59/live — это адрес промежуточного сервера, который заберет RTSP видеопоток с камеры и конвертирует его в RTMP
rtsp://192.168.88.5/live.sdp — это RTSP адрес самой камеры.
Немного избыточный вариант кода плеера на Flex и AS3 доступен здесь.
Способ 2 — RTMP с оберткой HTML5
Желающих кодить на Action Script 3 все меньше. Специально для этого придуман способ с HTML5 оберткой, которая позволяет управлять RTMP-плеером из JavaScript. В этом случае флэшка подгружается на HTML-страницу только для того чтобы отобразить картинку и выдать в динамики звук.
Полный код плеера находится здесь. А выглядит это так:
Способ 3 — RTMFP
Протокол RTMFP также работает внутри флэш плеера. Разница с RTMP в том, что RTMFP работает поверх протокола UDP и тем самым является более пригодным для получения трансляции с низкой задержкой.
Код плеера на AS3 в этом случае полностью идентичен используемому в RTMP, добавлена одна буква F в строке протокола подключения к серверу.
Для порядка дадим скриншот с RTMFP
Способ 4 — RTMFP c оберткой HTML5
Этот способ идентичен пункту 2, с той разницей, что мы при инициализации в JavaScript устанавливаем RTMFP протокол для использования в нижележащей флэшке (swf-объекте).
Способ 5 — WebRTC
В данном случае Flash не используется совсем и видеопоток проигрывается средствами самого браузера, без использования сторонних плагинов. Это работает и в Android Chrome и Android Firefox — мобильных браузерах, где Flash не установлен. WebRTC дает самую низкую задержку — менее 0.5 секунды.
Автоматически определяется поддержка WebRTC, и если поддерживается то поток играет по WebRTC.
Способ 6 — Websockets
WebRTC и Flash не покрывают все браузеры и платформы. Например, в браузере iOS Safari эти технологии не поддерживаются.
На iOS Safari можно доставить видеопоток по транспорту Websocket (TCP соединению между браузером и сервером). В этот туннель можно завернуть сконвертированный с RTSP видеопоток. После того, как бинарные данные придут их можно декодировать с помощью JavaScript и отрисовать на Canvas HTML5-элементе.
Именно этим занимается Websocket — плеер при работе в браузере iOS Safari, а его код снаружи выглядит также:
Это чем-то похоже на подход с флэшкой, когда под HTML5 лежит swf-элемент. В данном случае, под HTML5-страницей лежит не swf-объект, а JavaScript-приложение, которое тянет данные по вебсокетам, декодирует и отрисовывает на Canvas в нескольких потоках.
Так выглядит RTSP поток на Canvas в браузере iOS Safari
Способ 7 — HLS
При конвертации RTSP в HLS, видеопоток разбивается на сегменты, которые благополучно скачиваются с сервера и отображаются в HLS-плеере.

В качестве HLS-плеера мы используем video.js. Код плеера можно скачать здесь.
Как выглядит плеер:
Способ 8 — Android приложение, WebRTC
Приложение забирает поток с сервера по WebRTC. Задача сервера в этом случае — сконвертировать RTSP в WebRTC и скормить мобильному приложению.
Java-код плеера для Android находится здесь и выглядит так:
Тестовое мобильное приложение плеера можно установить из Google Play, а исходники приложения скачать здесь.
Так выглядит воспроизведение RTSP потока по WebRTC на планшете Asus под Android:
Способ 9 — iOS приложение, WebRTC
Приложение также как и в случае Android забирает поток с сервера по WebRTC.
Скачать исходный код плеера для iOS можно здесь.
А из App Store можно установить тестовое приложение, которое использует показанные выше куски кода. Его работа с RTSP-потоком выглядит так:
Результаты
Подведем итоги и объединим полученные результаты в табличку:
| Способ отображения | Применение | Задержка | |
| 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 потока
Flash Streaming — пример swf приложения, проигрывающего потоки по RTMP и RTMFP. Способы 1 и 3.
Source — исходный код swf приложения на Flex / AS3.
Player — пример web-приложения, которое воспроизводит RTSP поток по RTMP, RTMFP, WebRTC, Websocket. Способы 2,4,5,6.
Source — исходный код веб-плеера.
HLS плеер — пример web-плеера, играющего HLS. Способ 7.
Source — исходный код HLS плеера.
Android плеер WebRTC — пример мобильного приложения, которое играет поток по WebRTC. Способ 8.
Source — исходный код мобильного приложения.
iOS плеер WebRTC — пример мобильного приложения, которое играет WebRTC поток. Способ 9.
Source — исходный код мобильного приложения.
Что такое протокол RTSP для IP-камер
Протокол RTSP можно использовать для передачи изображений в системах видеонаблюдения, и благодаря его совместимости с несколькими устройствами он является отличным вариантом для гибридных проектов.
В этой статье вы узнаете, что такое протокол RTSP и как его использовать для IP-камеры, цифрового рекордера (DVR) или сетевого рекордера (NVR).
Что такое протокол RTSP?
Этот протокол не был создан исключительно для видеонаблюдения, он уже использовался в других секторах, где существует необходимость в передаче в реальном времени, был принят производителями устройств видеонаблюдения и стал стандартным протоколом.
Протокол RTSP для CCTV
Производители видеонаблюдения внедряют протокол RTSP на своих камерах, рекордерах и программном обеспечении, чтобы они были совместимы с другими устройствами, доступными на рынке.
Приобретая IP-камеру и сетевой видеомагнитофон от разных производителей, вы можете общаться с ними по этому универсальному протоколу.
Для настройки оборудования необходимо выяснить, какую команду RTSP следует использовать, и эту информацию можно найти в руководстве по продукту или в службе технической поддержки.
Как использовать протокол RTSP
Представьте, что вы приобрели IP-камеру у Dahua (китайского производителя) и хотите использовать ее с сетевым рекордером (NVR), который у вас уже есть, но он принадлежит другому производителю, например Samsung.
Вам следует поискать в руководстве по эксплуатации камеры Dahua команду RTSP, которая должна использоваться для потоковой передачи видео по сети.
Если вы не найдете эту информацию в руководстве по продукту, вам следует обратиться в службу технической поддержки производителя, поскольку очень важно, чтобы вы получили правильную команду, чтобы ваше оборудование могло взаимодействовать друг с другом.
После получения этой информации вы должны вставить ее в устройство записи, которое инициирует запрос на отправку видео по этому универсальному протоколу.
На практике просто откройте меню NVR и введите команду RTSP, а затем введите имя пользователя и пароль IP-камеры, и после получения этой информации камера отправит видеопоток в реальном времени.
Как использовать протокол RTSP для облачной записи
Принцип записи видео в облаке тот же, просто используйте правильную команду RTSP, чтобы запросить камеру отправить видео на сервер, который находится где-то в Интернете.
На приведенной ниже схеме показана IP-камера, которая установлена во внутренней сети и подключена к маршрутизатору. Вам просто нужно настроить сервер записи в облаке для отправки команды RTSP через Интернет, и как только она будет получена камерой, она начнет потоковую передачу видео.
В этом примере сервер просто отправляет команду RTSP через Интернет и, достигнув внешнего интерфейса маршрутизатора, направляет его во внутреннюю сеть, где расположена камера.
Следовательно, необходимо настроить маршрутизатор и ввести правила маршрутизации, основанные на сетевых интерфейсах и портах связи.
Как проверить IP-камеру с протоколом RTSP
Существует традиционное бесплатное программное обеспечение под названием VLC, которое можно использовать для таких тестов. Диаграмма ниже показывает пример того, как его использовать.
В этом примере IP-камера подключена к маршрутизатору, который, в свою очередь, подключен к ноутбуку, который использует программное обеспечение VLC для отправки команды RTSP на камеру. Все находится в локальной сети, и поэтому нет необходимости в правилах маршрутизации (устройства подключены к внутренним портам).
В программном обеспечении VLC просто откройте меню « Media> Open Network Stream » или введите CTRL + N и вставьте команду RTSP с IP-камеры.
Команда в этом случае:
После отправки команды вы можете увидеть изображение IP-камеры прямо на ноутбуке, что подтверждает правильность используемой команды, а также правильность сетевых подключений и IP-адресов.
После этого начального теста можно перейти к более сложным тестам и использовать удаленное соединение с устройствами записи IP-камер или системами облачной записи.
Практический пример использования протокола RTSP через облако
Давайте поговорим о практическом примере использования протокола RTSP для CCTV.
Представьте себе ситуацию, когда у вас есть несколько аналоговых камер видеонаблюдения, подключенных к цифровому рекордеру (DVR), и вы намерены иметь избыточные видеозаписи. Вам просто нужно выбрать сервис, который позволяет хранить все на сервере в облаке (где-то в Интернете).
На рынке доступно множество облачных сервисов и вы можете выбрать тот, который лучше всего соответствует вашим потребностям.
В этом примере я буду использовать службы Angelcam, которые работают с различными марками устройств, а также хорошо работают с протоколом RTSP.
Настройка роутера для работы с облаком
Перед выполнением тестов с помощью команды в облаке необходимо настроить маршрутизатор, эта процедура предельно проста, достаточно использовать информацию IP и порт IP-камеры.
По сути, вы должны сообщить маршрутизатору, что он должен направлять трафик, поступающий из Интернета, на IP-камеру всякий раз, когда запрос направлен на определенный логический порт, который в случае протокола RTSP по умолчанию равен 554.
Очевидно, вам придется искать другие меню в разных моделях маршрутизаторов, обычно вы находите это меню как переадресация портов, переадресация портов или NAT.
Как настроить облачный сервер
Видеорегистратор Dahua может беспрепятственно работать с этой службой, поскольку она позволяет использовать команду RTSP, а информация, необходимая для настройки, доступна в руководстве по продукту.
В этом конкретном случае устройство представляет собой 4-канальный цифровой видеорегистратор Dahua, который использует следующую команду RTSP
Просто используйте эту команду и замените информацию об IP, порте, пользователе и пароле, и все, все будет работать в соответствии с вашей сетью. Все должно быть настроено на стороне сервера облака, и правила маршрутизации должны быть готовы на маршрутизаторе, который находится в вашей локальной сети.
Посмотрите на следующем изображении пример того, как настроить облако Angelcam. После создания учетной записи платформы на сайте https://angelcam.com войдите под именем пользователя и паролем и выберите опцию DVR и NVR.
После этого просто введите или вставьте команду RTSP, как показано на следующем рисунке
Обратите внимание, что используемая команда включает внешний IP-адрес, используемый маршрутизатором, и порт 554, который использовался в конфигурации маршрутизатора и который является стандартом DVR.
Важно понимать концепцию: команда RTSP, отправляемая облачным сервером, поступает на маршрутизатор через внешний интерфейс перед маршрутизацией в соответствии с установленными правилами, и поэтому вы должны убедиться, какой внешний IP-адрес используется маршрутизатором.
На следующем рисунке показан конечный результат подключения камеры к серверу в облаке.
В некоторых случаях вы заметите, что качество изображения может ухудшаться из-за некоторых факторов, таких как отсутствие стабильности интернет-соединения, уменьшение доступной полосы пропускания или несовместимость команд между облачным сервером или камерой.
Обязательно обновите микропрограмму IP-камеры до последней доступной версии, это поможет поддерживать совместимость с системами, которые используют RTSP в качестве облачных сервисов и рекордеры других марок.
Если у вас нет статического IP-адреса в вашей интернет-ссылке
Если у вас нет статического IP-адреса в интернет-соединении, вы можете использовать службу DDNS, доступную в Интернете, поэтому облачная служба будет продолжать работать и записывать изображения с вашей камеры, даже если произошла автоматическая смена внешнего IP-адреса. вашего роутера.
Как найти команду RTSP вашей IP-камеры
Заключительные соображения
Теперь вы уже знаете, что такое протокол RTSP и как вы можете проводить тесты и использовать его в практических ситуациях.
Я рекомендую вам выполнить локальные тесты с программным обеспечением VLC и устройствами, имеющимися в вашей сети, чтобы ознакомиться с использованием этого протокола.
Если понравилась статья поделитесь в социальных сетях, кликнув по иконкам ниже
Захват видео с сетевых камер, часть 2

В первой своей статье «измерение расстояния до объекта и его скорости» я рассмотрел захват изображений с веб-камер через Video4Linux2 и через DirectX. В следующей статье «захват видео с сетевых камер, часть 1» я рассмотрел как работать с сетевыми Motion-JPEG камерами. Сейчас я поведаю Вам о захвате изображений с сетевых RTSP камер, в частности поток Motion-JPEG по RTSP.
Задача эта более сложная нежели Motion-JPEG по HTTP, так как необходимо больше действий, больше подключений, но взамен мы получаем большую гибкость, скорость, функциональность и даже некую универсальность. Честно говоря, RTSP для простых задач избыточен, но я не сомневаюсь, что найдутся ситуации, где он будет необходим.
Что такое RTSP
Рабочей лошадкой является другой протокол: RTP — Real-time Transport Protocol — транспортный протокол реального времени. С его помощью и передаются нужные нам данные. Стоит отметить, что с этим протоколом очень даже приятно работать, дело в том, что он облегчает клиентскому ПО восстановление данных после их фрагментации на канальном уровне. А также несёт в себе ещё несколько полезных полей: формат передаваемых данных, временную метку и поле синхронизации (если передаётся, например, одновременно аудио и видео). Хотя этот протокол может работать по TCP, его обычно используют с UDP из-за его ориентированности на скорость. То есть RTP данные это UDP датаграмма с заголовком и полезными данными медиа-контента (payload).
Казалось бы нам больше ничего и не нужно. Подключаемся по RTSP, забираем по RTP. Но не тут-то было, умные дяди придумали третий протокол: RTCP — Real-time Transport Control Protocol — протокол контроля за транспортом в реальном времени. Этот протокол служит для определения качества сервиса, с его помощью клиент и сервер знают как хорошо или плохо идёт передача контента. В соответствии с этими данными сервер, например, может понизить битрейт или вообще перейти на другой кодек.
Принято, что RTP использует чётный номер порта, а RTCP следующий нечётный.
Пример общения по RTSP
У меня только один источник RTSP потока — камера eVidence APIX Box M1, поэтому все примеры относятся к ней.
Ниже лог общения между плеером VLC (он правда мне очень помогает в моих исследованиях) и этой камерой. Первый запрос от VLC на порт 554 камеры. Ответ через пустую строку и начинается с «RTSP/1.0».
Первым делом VLC спрашивает камеру:
— А что я вообще могу с тобой делать? (OPTIONS)
— И тебе привет. А можешь ты меня просить сделать любое из OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY и PAUSE.
— Ладно, тогда скажи мне что у тебя есть по запросу «/jpeg»? (DESCRIBE)
— Тут у меня видео первой дорожкой идёт, M-JPEG, а второй дорожкой идёт аудио простое.
— Интересно глянуть на видео, первую дорожку, отсыпь мне его, пожалуйста в карман номер 41760, а шелуху всякую можешь в карман номер 41761 скидывать. (SETUP track1)
— ОК, по твоей команде…
— И звук тоже хочу послушать, сыпь в 7878, 7879 карманы. (SETUP track2)
— Да без проблем.
— Ну, посыпали. (PLAY)
Через некоторое время:
— Ладно, хватит, насмотрелся. (TEARDOWN)
— Как скажешь.
А ответ от сервера начинается с » RTSP/1.0 200 OK «, это прямо как » HTTP/1.1 200 OK » — знак, что всё хорошо: запрос принят,





















