06
Фев

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

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

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

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

Язык для virt2real

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

Виртурилке, как любой другой платформе для DIY-творчества, необходимо API и системный язык, позволяющий реализовывать 80% типовых задач, не выходящих за рамки базового применения устройства. Это не касается задач, в которых нужна поддержка специализированного оборудования или максимальное быстродействие с целью обеспечить минимальную задержку реакции системы.

Во всех остальных случаях можно обойтись достаточно простой моделью, позволяющей осуществлять базовые операции над одним устройством или их группой для создания систем управления с обратной связью через аудио/видео. Предполагается, что в основе этой модели будет лежать протокол поверх HTTP (REST, JSON RPC, и т.п.), который будет использован для управления конечным оборудованием.

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

В перерывах между основными направлениями деятельности удалось потрогать 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 дает о себе знать. 😉

Следующая страница →