Как вывести изображение на камеру

Как установить видеонаблюдение любым гаджетом с камерой

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Содержание

Содержание

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

Видеорегистратор и камера видеонаблюдения – в чем разница?

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

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

Видеорегистратор из ноутбука, планшета

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Программного обеспечения, превращающего ноутбук в регистратор или IP-камеру – неисчислимое множество.

Xeoma способна превратить ваш ноутбук в регистратор или IP-камеру буквально в пару кликов – её даже не потребуется устанавливать. Достаточно загрузить программу, запустить её и нацелить камеру ноутбука в нужную сторону.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

ПО имеет огромный потенциал для настройки и расширения, способный удовлетворить самого требовательного пользователя – в программу можно установить модули записи по расписанию, детектора движения (производящего запись только тогда, когда в кадре что-то движется), детектора звука (начинающего запись, когда рядом с ноутбуком звучит какой-то звук), записи участка изображения, распознавания автомобильных номеров, распознавания лиц, распознавания эмоций и многие другие.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

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

Xeoma способна как хранить видео на жестком диске компьютера, так и предоставлять к нему доступ через Интернет: и вам даже не потребуется знать IP-адрес ноутбука и разбираться в сетевых настройках. Всего-навсего нужно будет записать логин/пароль и ввести их на любом устройстве в сети, на котором установлена Xeoma. У приложения есть версии для всех популярных платформ – Windows, MacOS, Android и iOS.

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

К сожалению, удаленный доступ к камере доступен только в платной версии. Кроме того, в бесплатной версии поддерживается только одна камера и её разрешение будет ограничено. Версии Sighthound есть как под настольные Windows и MacOS, так и под мобильные Android и iOS.

Ivideon Server – в бесплатном варианте поддерживает до двух камер, имеет детектор движения и звука, запись по расписанию, а также позволяет подключаться к камерам с компьютеров и мобильных устройств, на которых установлено приложение Ivideon.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Ivideon Server можно запустить на компьютере под управлением Windows, MacOS или Linux. Существует и мобильное приложение, которое, кроме доступа к записям и к изображению с камер, может сообщать уведомлениями о произошедших событиях – срабатывании детектора движения или звука, начале записи и т.д.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Имеет богатые возможности по настройке реакции на событие – запись видео, сохранение снимка, загрузка видеофайла на FTP-сервер, отправка СМС, запуск внешнего приложения с заданными параметрами и т.д. Программа имеет встроенный веб-сервер, и вы сможете наблюдать картинку с камеры вживую в окне любого браузера на любом устройстве, подключенном к сети. Правда, для этого надо иметь некоторое представление об устройстве сети Ethernet и, возможно, придется пробросить порты через файрволл или роутер.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Персональный компьютер+веб-камера

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Видеорегистратор из смартфона

Все очень похоже на предыдущие случаи – многие из перечисленных ранее приложений имеют версии для мобильных устройств. Так, Xeoma и Sighthound могут быть скачаны с официальных магазинов приложений и установлены на устройства под управлением Android и iOS. Есть и чисто мобильные аналогичные приложения, и выбор их, пожалуй, даже богаче, чем для настольных ПК:

Roadly (RoadAR в версии для iOS) превратит ваш смартфон в автомобильный видеорегистратор, совмещенный с антирадаром. Roadly записывает прямо в видеофайл текущую скорость, время и координаты, кроме того, он способен распознавать дорожные знаки и предупреждать водителя о превышении скорости.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Антирадар в этой программе, разумеется, неспособен определить мобильные радарные комплексы, но о стационарном радаре, находящемся в базе данных, он исправно предупредит водителя. Для работы Roadly использует встроенный GPS-навигатор смартфона, постоянно держит включенной камеру и дает серьезную нагрузку на процессор, поэтому для предотвращения быстрого разряда рекомендуется держать смартфон подключенным к зарядке. Отличное приложение, но и аппаратные требования у него приличные – на телефонах средней производительности будет «тормозить»

CamOnRoad – еще одно многофункциональное автомобильное приложение. Оно может работать не только как видеорегистратор, но и как навигатор. CamOnRoad использует Google карты и способен не только отобразить маршрут на карте, но и выводить навигационные стрелки прямо поверх видеоизображения в реальном времени.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Приложение умеет сохранять видео в облаке, где оно будет доступно через веб-интерфейс с любого устройства в сети. Еще CamOnRoad может предупреждать о стационарных радарах, включать громкую связь при входящем вызове и переключать тыльную/фронтальную камеры одним нажатием. И все это – совершенно бесплатно.

Observer – еще одно мобильное приложение, превращающее смартфон в продвинутый видеорегистратор, причем владелец смарфтона может даже об этом не догадываться. Установив его на смартфон ребенка, вы можете больше не беспокоиться о том, где он находится и чем занят – в любой момент вы сможете получить координаты смартфона и «картинку» с его камеры.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Но если у вас возникнет искушение поставить такую программу на смартфон начальника, подруги или просто незнакомого человека, то имейте в виду, что это уже является серьезным правонарушением и преследуется уголовным кодексом РФ. И почему люди не клеят стикеры на камеру смартфона?

Видеорегистратор из экшн-камеры

Экшн-камера фактически уже является видеорегистратором. Установка её в автомобиль не вызовет никаких сложностей – широкий угол обзора, большое разрешение и высокая частота кадров, характерные для экшн-камер, ничуть не помешают автомобильному регистратору. Малый вес и богатая система креплений облегчат установку камеры под стеклом – для некоторых моделей даже можно приобрести крепление-присоску. Плюсом будет также высокая их автономность – на непродолжительную поездку экшн-камеру можно даже не подключать к зарядке.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Из неудобств можно отметить разве только отсутствие у экшн-камер детектора движения и автоматического включения с запуском двигателя – включать её на запись придется вручную.

Удастся ли превратить экшн-камеру в камеру видеонаблюдения – зависит от её возможностей. Если экшн-камера имеет поддержку Wi-Fi, то возможность использования её в качестве камеры наблюдения обычно предоставляется программным обеспечением, идущим с устройством – достаточно установить его на компьютер, чтобы получить возможность просматривать видео с камеры «вживую». Если она оснащена интерфейсом USB, то все зависит от того, выдает ли камера в него видеоинформацию. В этом случае достаточно будет установить драйвер, и система подключит её как веб-камеру. Но в большинстве случаев разъем USB на экшн-камере используется только для доступа к памяти и подзарядки устройства.

Видеорегистратор из фотоаппарата

Если фотоаппарат снимает видео (как большинство современных), то использовать его в качестве регистратора очень просто. Но не всегда в этом есть смысл – например, для съемки из движущегося автомобиля объективы фотокамер приспособлены плохо – если у камеры есть автофокус, он будет не успевать фокусироваться, если автофокуса нет, изображение часто будет размытым. Возникающие при движении вибрации также не поспособствуют качеству кадра. Ну и угол зрения объективов фотокамер обычно намного уже, чем у регистраторов – в кадр попадет намного меньше информации.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Большинство производителей имеют свое ПО для «съемки на привязи». Существуют и универсальные программы для подключения к фотоаппаратам, более того, если камера умеет «отдавать» видео через какой-либо интерфейс по общепринятому стандарту, её можно подключить как веб-камеру к какой-нибудь программе, например, к той же Xeoma. Но большинство камер подобной «щедростью» не отличается, и получить с них видео на компьютере можно либо через ПО производителя, либо никак.

Впрочем, есть еще одна возможность, появившаяся вместе с камерами под управлением Android. На многие такие камеры можно устанавливать приложения с GooglePlay. В этом случае превращение фотоаппарата в регистратор или камеру видеонаблюдения будет не сложнее, чем в случае со смартфоном – к вашим услугам те же Xeoma, Sighthound, Roadly и еще сотни подобных приложений.

Источник

Транслируем видеопоток с IP-камеры с помощью WebRTC

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

На это есть как минимум две причины:

1. По мере увеличения числа зрителей Ethernet-трансляции все больше будет ощущаться сперва нехватка толщины канала, а затем и ресурсов самой камеры.

Или же это будет RTSP/RTP и H.264, в этом случае в браузере должен быть установлен плагин видеоплеера, такой как VLC или QuickTime. Такой плагин будет забирать и проигрывать видео, как и сам плеер. Но нам то ведь нужен настоящий браузерный стриминг без установки дополнительных костылей/плагинов.

Для начала поснифаем IP камеру чтобы узнать что именно отправляет этот девайс в сторону браузера. В качестве подопытного будет камера D-Link DCS 7010L:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Подробнее об установке и настройке камеры вы сможете прочесть ниже, а здесь мы просто посмотрим что она использует для видео стриминга. При попадании в админку камеры через web-интерфейс наблюдаем примерно такую картинку (пардоньте за пейзаж):

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Картинка открывается во всех браузерах и равномерно подлагивает, примерно раз в секунду. Учитывая что и камера и лаптоп, на котором мы смотрим поток подключены к одному маршрутизатору, все должно быть плавно и красиво, но это не так. Похоже на HTTP. Запускаем Wireshark чтобы подтвердить свои догадки:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Здесь видим последовательность TCP фрагментов длиной 1514 байт

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

и завершающий HTTP 200 OK с длиной принятого JPEG:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Далее заходим в Chrome / Developer Tools / Network и видим в реальном времени как мелькают GET Запросы и картинки, переданные по HTTP:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Такой стриминг нам не нужен. Не плавный, дергает HTTP запросы. Сколько таких запросов в секунду выдержит камера? Есть основания полагать что на 10 зрителях и раньше камера благополучно загнется или начнет страшно глючить и выдавать слайды.

Если заглянуть в HTML страницы админки камеры, увидим вот такой интересный код:

RTSP/RTP — это как раз то что нужно для правильного воспроизведения видео. Но будет ли это работать в браузере? — Нет. А вот если установить плагин QuickTime — все будет работать. Но мы-то делаем чисто-браузерный стриминг.

Здесь можно упомянуть еще Flash Player, который может через подходящий сервер типа Wowza получать RTMP поток, сконвертированный из RTSP, RTP, H.264. Но Flash Player, как известно тоже браузерный плагин, хотя несравненно более популярный чем VLC или QuickTime.

В данном случае, мы протестируем тот же RTSP/RTP re-streaming, но в качестве проигрывающего устройства будет использоваться WebRTC-совместимый браузер без всяких дополнительных браузерных плагинов и других костылей. Мы настроим сервер-ретранслятор, который заберет поток у IP-камеры и отдаст его в Интернет произвольному числу пользователей, использующих браузеры с поддержкой WebRTC.

Подключение IP-камеры

Как уже упоминалось выше, для тестирования была выбрана простая IP-камера D-Link DCS-7010L. Ключевым критерием выбора здесь была поддержка устройством протокола RTSP, поскольку именно по нему наш сервер будет забирать видеопоток с камеры.

Камеру подключаем к маршрутизатору идущим в комплекте патч-кордом. После включения питания и подключения к маршрутизатору, камера взяла IP-адрес по DHCP, в нашем случае это был 192.168.1.34 (Если зайти в настройки маршрутизатора, вы увидите, что подключено устройство DCS 7010L — это она и есть). Самое время протестировать камеру.

Открываем указанный IP-адрес в браузере 192.168.1.34, чтобы попасть в веб-интерфейс администратора камеры. По умолчанию пароль отсутствует.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Как видно, в админской панели видео с камеры транслируется исправно. При этом заметны периодические подлагивания. Это мы и будем фиксить с помощью WebRTC.

Настройка камеры

Сначала в настройках камеры мы отключаем аутентификацию – в рамках тестирования будем отдавать поток всем, кто попросит. Для этого в веб-интерфейсе камеры заходим в настройки Setup – Network и выставляем значение опции Authentication в Disable.

Там же проверяем значение порта протокола RTSP, по умолчанию он равен 554. Формат отдаваемого видео определяется используемым профилем. В камере их можно задать до трех штук, мы воспользуемся первым, live1.sdp – по умолчанию он настроен на использование H.264 для видео и G.711 для аудио. Поменять настройки при необходимости можно в разделе Setup – Audio and Video.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Теперь можно проверить работу камеры через RTSP. Открываем VLC Player (можно любой другой, поддерживающий RTSP — QuickTime, Windows Media Player, RealPlayer и др.) и в диалоге Open URL задаем RTSP адрес камеры: rtsp://192.168.1.34/live1.sdp

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Что ж, все работает, как и должно. Камера исправно воспроизводит видеопоток в плеере через протокол RTSP.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Кстати, поток воспроизводится достаточно плавно и без артефактов. Ждем того же и от WebRTC.

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

Итак, камера установлена, протестирована с десктопными плеерами и готова к вещанию через сервер. С помощью whatismyip.com определяем внешний IP-адрес камеры. В нашем случае это был 178.51.142.223. Осталось сказать роутеру, чтобы при обращении по RTSP на порт 554 входящие запросы передавались на IP-камеру.

Забиваем соответствующие настройки в маршрутизатор…

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

…и проверяем внешний IP адрес и RTSP порт с помощью telnet:

telnet 178.51.142.223 554

Убедившись, что по данному порту идет ответ, приступаем к установке WebRTC сервера.

За хостинг будет отвечать виртуальный сервер на Centos 64 bit на Amazon EC2.
Чтобы не иметь проблем с производительностью, выбрали m3.medium инстанс с одним VCPU:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Да, да, есть еще Linode и DigitalOcean, но в данном случае захотелось поамазонить.
Забегая вперед, напишу что в панели управления Amazon EC2 нужно добавить несколько правил(пробросить порты), без которых пример не будет работать. Это порты для WebRTC(SRTP, RTCP, ICE) трафика и порты для RTSP/RTP трафика. Если будете пробовать, в правилах Amazon должно быть нечто похожее для входящего трафика:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

С DigitalOcean кстати все будет проще, достаточно открыть эти порты на firewall или заглушить последний. По последнему опыту эксплуатации инстансов DO, там пока еще выдают статический IP адрес и не заморачваются с NAT-ами, а значит и проброс портов, как в случае Амазона, не нужен.

В качестве серверного ПО, ретранслирующего RTSP/RTP поток в WebRTC будем использовать WebRTC Media & Broadcasting Server от Flashphoner. Стриминг сервер очень похож на Wowza, которая умеет отдавать RTSP/RTP поток на Flash. Единственное отличие в том, что этот поток будет отдан на WebRTC, а не на Flash. Т.е. между браузером и сервером пройдет честный DTLS, установится SRTP сессия и поток, закодированный в VP8 пойдет зрителю.

Для установки нам потребуется SSH-доступ.

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

Настройка сервера

Напомним, что структура нашей WebRTC трансляции такова:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Установку основных элементов этой диаграммы мы уже произвели, осталось наладить «стрелочки» взаимодействий.

Связь между браузером и WebRTC сервером обеспечивает web-клиент, который есть на гитхабе:. Набор JS, CSS и HTML файлов просто закидывается в /var/www/html на этапе установки (см. выше под спойлером пункт 9).

Взаимодействие браузера и сервера настраивается в конфигурационном XML-файле flashphoner.xml. Туда нужно вписать IP-адрес сервера, чтобы web-клиент смог подключаться к WebRTC серверу по HTML5 Websockets (пункт 9 выше).

Настройка сервера на этом заканчивается, можно проверить его работу:

Здесь webrtc-ipcam.ddns.net — это бесплатный домен, полученный через сервер динамического DNS noip.com, который ссылается на наш внешний IP адрес. Маршрутизатору мы сказали перенаправлять RTSP запросы на 192.168.1.34 в соответствии с правилами трансляции сетевых адресов NAT (также см. выше).
Параметр id=rtsp://webrtc-ipcam.ddns.net/live1.sdp задает URL потока для воспроизведения. WebRTC сервер запросит потоки с камеры, обработает их и отдаст браузеру на воспроизведение по WebRTC. Возможно ваш роутер поддерживает DDNS. Если нет, то такая поддержка есть у самой IP камеры:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

А так поддержка DDNS выглядит в самом роутере:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Теперь можно приступить к тестированию и оценить результаты.

Тестирование

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

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

В это время устанавливается соединение браузера с сервером по вебсокетам, далее сервер запрашивает IP камеру по RTSP, получает поток H.264 по RTP и транскодирует его в VP8 / SRTP — который в итоге воспроизводит WebRTC- браузер.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Далее после небольшого ожидания, отображается уже знакомая картинка.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

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

Убеждаемся что это действительно WebRTC.

Вдруг наc обманули, и видео с IP камеры снова идет по HTTP? Не будем праздно лицезреть картинку, а проверим, что за трафик мы получаем на самом деле. Конечно же снова запускаем Wireshark и консоль отладки в Chrome. В консоли Chrome браузера можем наблюдать следующее:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

На этот раз ничего не мелькает и не видно никаких картинок, передающихся по HTTP. Все что мы видим на этот раз — это Websocket фреймы и большинство из них относятся к типам ping/pong для поддержания Websocket-сессии. Интересные фреймы: connect, prepareRtspSession и onReadyToPlay — именно в таком порядке осуществляется установка подключения к серверу: сначала коннект по Websocket, а потом запрос потока на воспроизведение.

А вот что показывает chrome://webrtc-internals

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

По показаниям графиков, мы имеем битрейт с IP камеры 1Mbps. Исходящий трафик тоже есть, скорее всего это RTCP и ICE пакеты. RTT до Amazon сервера составляет около 300 миллисекунд.

Теперь заглянем в Wireshark, там отчетливо видно UDP трафик с IP адреса сервера. На картинке ниже пакеты по 1468 байт. Это и есть WebRTC. Точнее SRTP пакеты несущие VP8 видео фреймы, которые мы можем наблюдать на экране браузера. Кроме это проскакивают STUN запросы(самый нижний пакет на картинке) — это WebRTC ICE заботливо проверяет соединение.

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

Стоит также отметить сравнительно малую задержку (пинг до дата-центра составил порядка 250 мс) воспроизведения видео. WebRTC работает по SRTP/UDP, а это как ни крути наиболее быстрый способ доставки пакетов, в отличии от HTTP, RTMP и других TCP-подобных методов стриминга. Т.е. задержка, видимая глазом должна составлять RTT + время буферизации, декодирования и воспроизведения браузером. Визуально в данном случае так и есть — глаз почти не видит задержку, она менее 500 миллисекунд.

Следующий тест — подключение других зрителей. Удалось открыть 10 окон Chrome, и каждое из них показывало картинку. При этом сам Chrome начал немного тупить. При открытии 11-го окна на другом компьютере, воспроизведение оставалось плавным.

Про WebRTC на мобильных устройствах

Как известно, WebRTC поддерживают Chrome и Firefox браузеры на платформе Android.
Проверим, будет ли там отображаться наша трансляция:

Как вывести изображение на камеру. Смотреть фото Как вывести изображение на камеру. Смотреть картинку Как вывести изображение на камеру. Картинка про Как вывести изображение на камеру. Фото Как вывести изображение на камеру

На картинке HTC телефон, в Firefox браузере отображается видео с камеры. Отличий в плавности воспроизведения от десктопа нет.

Заключение

В результате нам удалось запустить WebRTC онлайн-трансляцию с IP-камеры на несколько браузеров с минимальными усилиями. Не потребовалось ни плясок с бубном, ни rocket-science – только базовые знания Linux и SSH-консоли.

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

Подводя итог, можно сказать что браузерные WebRTC трансляции имеют право на существование, т.к. в нашем случае WebRTC это уже не костыль или плагин, а реальная платформа для воспроизведения видео в браузере.

Почему же мы не видим повсеместного внедрения WebRTC?

Главный тормоз, пожалуй, недостаток кодеков. WebRTC сообществу и вендорам следовало бы сделать усилие и ввести в WebRTC кодек H.264. Против VP8 сказать нечего, но зачем отказываться от миллионов совместимых девайсов и ПО, которые работают с H.264? Патенты, такие патенты…

На втором месте, не полная поддержка в браузерах. C IE и Safari, например вопрос остается открытым и там придется переходить на другой тип стриминга или использовать плагин типа webrtc4all.

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

Источник

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

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