06
Фев

Домашнее видеонаблюдение

Написал Максим Крентовский в Исследования

Домашнее видеонаблюдение — тема не сколь широко распространенная, но весьма интересная с инженерной точки зрения, позволившая объединить имеющиеся знания в области практического применения. Разумеется, это решение ничуть не лучше готовых комплектов «камеры + NVR», не продающиеся в наше технологичное время разве что только в продуктовых магазинах, но при этом в систему можно заложить дополнительные функции, не предлагаемые стандартными решениями.
cam
Подробнее →

Комментарии к записи Домашнее видеонаблюдение отключены
22
Апр

Трансляция видео с камеры на сайт

Написал Максим Крентовский в Деятельность

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

Понятно, что эта задачка достаточно простая в теории, но практика не даст расслабится. Исходный план был таков: берем SoC-устройство с камерой, подключаем к установленному WiFi-роутеру, транслируем RTMP-поток на VPS с сайтом, где nginx-rtmp спокойно раздаст поток всем желающим. Реальность оказалась много интереснее…

10475049_1438647743041388_1655424735_n
Подробнее →

В перерывах между основными направлениями деятельности удалось потрогать nginx-rtmp Романа Арутюняна, который, по случайному совпадению, оказался коллегой моей супруги.

Пробование состоялось в два этапа, реинкарнирующих два моих старых проекта. Во-первых, это hdin.tv.

hdin.tv

Тут все просто — обычный bash-скрипт берет из каталога по очереди файлы и играет их на nginx-rtmp, который раздает из как по одноименному протоколу от Adobe (не желаю им добра), так и по HLS, из-за чего видео вполне можно воспроизводить на iPhone и iPad. Получилось такое небольшое, примитивное интернет-телевидение. Видео, кстати, 720p.

Второй воскресший проект — это видео-чат vi-co.tv. В свое время это был один из моих первых опытов на языке программирования Эрланг, с тех пор было немало попыток переписать его во что-либо удобоваримое и вот, наконец, удалось выдернуть из графика пару часов в день, поэтому через неделю новая инкарнация была написана целиком на новой базе. От Эрланга там всего-лишь 150 строк кода, остальное — пользовательский интерфейс (JavaScript + Action Script), из-за чего Github активно не желает признавать проект эрланговским. 🙂

vi-co.tv

Итак, видеочат обрел новую форму и новый подход. Во-первых, был произведен отказ от модели регистрации — для того, чтобы поучаствовать, достаточно ввести свой ник — так проще, ну а защищаться пока ни от кого не надо. Во вторых, все действия опять происходят в рамках единого интерфейса, а с серверной частью идет обмен сигнальными сообщениями, ну а видео-потоки, как обычно, идут напрямую через nginx-rtmp. Обмен сообщениями построен поверх SockJS, который автоматически подбирает допустимый COMET-транспорт и берет на себя все взаимодействие, оставляя возможность отправлять и реагировать на события. На сервере все реплики и текущее состояние комнаты хранится внутри эрланговского процесса, перезагрузка приведет к полной потере истории, ну да и бог бы с ней.

По-хорошему, надо бы дописать авторизацию через социальные сети, журналирование и XMPP-интерфейс администратора, но что-то пока не хочется. Может, в дальнейшем… нет, все равно не хочется. 🙂

В целом, резюме по nginx-rtmp — использовать можно и нужно. Удобная и гибкая вещь, ну и префикс nginx дает о себе знать. 😉