Видео с камеры наблюдения на сайте бесплатно и без смс

Первоначально текст был опубликован на https://geektimes.ru/.

Ниже копия текста на 31.01.2017 со страницы https://geektimes.ru/post/285342/

 

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

  • Дать доступ к камере. Просто доступ к камере давать не стоит по соображениям безопасности. Камера ляжет уже при очень небольшой нагрузке.
  • Коммерческая услуга. Мы им доступ к камере и деньги, они нам ссылку для размещения на сайте. Они же решают проблему совместимости камеры и браузеров пользователей, производительности канала и доступности
  • На своих мощностях. Между пользователем и камерой ставится нечто, что отвечает за совместимость с браузерами, производительность и доступность. Проблемы решаем сами.

Этот вариант рассмотрим ниже. Т.к. «flash умер» или «flash вот-вот умрет«, вариант с размещением flash плейера на сайте не рассматривался. Тернистый путь поисков решений в интернетах не привел к готовому решению. Пришлось изобрести велосипед.

Подробнее изобретения под катом.

Описание полученного велосипеда подробнее:

  • камера видеонаблюдения отдает поток по протоколу rtsp.
  • ffmpeg берет видео поток с камеры и создает видео для показа через тег video стандарта html5.
  • nginx отдает созданные файлы пользователям
  • видео на странице показываем с помощью hls, точнее вот эта реализация

Подробнее о настройках

На каждый поток с камеры надо запустить ffmpeg для преобразования rtsp в файлы который поймет hls.

ffmpeg и поток со звуком

ffmpeg при старте пишет 25 fps при FullHD

log при запуске ffmpeg Выбрать ВсёПоказать

Видео просто копируется, аудио пришлось перекодировать иначе тишина.
Камера noname.

Как работает:

Берем поток, без перекодирования создаем файлы и список для воспроизведения в папке /tmp/www/.

nginx

Сокращаем стандартный для пакета debian файл default до, например, такого:

/etc/nginx/sites-enabled/default Выбрать ВсёПоказать

 
Пример страницы с видео:
/tmp/www/index.html Выбрать ВсёПоказать

Скрипт стоит разместить локально, он не имеет внешних зависимостей. Подробнее о настройках hls.

Как работает:

на странице подключается hls и воспроизводит файлы из списка index1.m3u8. Список и файлы обновляются ffmpeg.

Что получилось:

  • Работает;
  • Самую большую нагрузку создает ffmpeg, на процессоре Atom трехлетней давности;
    • Разрешение камеры Full HD без звука — 1%;
    • Разрешение камеры Full HD со звуком — 5%;
  • Количество процессов nginx — смотреть по нагрузке и доступному каналу. Нагрузку на процессор увидеть не удалось — не очень много надо на просто отдачу небольших файлов.;
  • Сервер с ffmpeg и nginx можно разместить где угодно, не обязательно на хостинге или в месте расположения камер;
  • Отставание от потока зависит от количества файлов в списке и размера(в секундах) файла. Например отставание в 10 секунд не очень влияет на просмотр процесса строительства многоэтажки;
  • Видеофайлы лучше размещать на tmpfs, они имеют небольшие размеры и часто они перезаписываются;
  • Весь сервис стоит поместить в контейнер. Все пакеты стандартные для FROM debian:jessie;
  • По итогам эксплуатации ffmpeg иногда падает, за ним нужно следить и перезапускать если упал.Вывод top из контейнера:
  • Смотреть можно на десктопах и мобильных устройствах с современными браузерами;
  • В обозримом будущем не потребует вмешательства.

Ссылки:

» Реализация hls
» Демо работы hls
» ffmpeg
» nginx

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

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