IP камеры разных брендов в одном приложении на Android

—

от автора

Недавно я написал статью, про то, как навайбкодил себе приложение для удалённого подключения к ПК по RDP с планшета Android, реализовав в том приложении все самые удобные функции, которых мне не хватало в уже существующих бесплатных решениях. Но то приложение, на самом деле, я сделал вторым, после того, как разработал себе программу для подключения к своим IP камерам разных брендов, так сказать, «на волне» личного внутреннего хайпа.

Давно пользовался IP камерой Boavision с его не очень удобным приложением, особенно в части адаптации под альбомную ориентацию планшета. Прикупив себе ещё пару камер на барахолке разных производителей, понял, что смотреть за всеми из разных приложений — та ещё боль. Тем более, некоторые из них требовали заводить аккаунт, а некоторые уже, попросту, не поддерживались ПО и отказывались подключаться вовсе. Благо, в последнем случае, имелся порт подключения по LAN и имел веб-интерфейс. Да и с подключением через браузер не всё так гладко было. Например, безымянная IP камера требовала старый Internet Explorer, что стало на моей Windows 11 небольшой проблемой по настройке Edge.

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

Внешний вид приложения на планшете

Внешний вид приложения на планшете
Внешний вид приложения в режиме просмотра камер "сеткой"

Внешний вид приложения в режиме просмотра камер «сеткой»

Вообщем, первым моим проектом вабкода для Android стала программа, которая по протоколам HTTP и ONVIF сможет подключаться и выводить картинку на планшете или смартфоне Android. Пока тестил, очень удобным стало добавление в программу авто-поиск камер в локальной сети по портам.

Автопоиск камер в локальной сети.

Автопоиск камер в локальной сети.
Автопоиск и определение типа порта, определение основных настроек камеры для получения трансляции

Автопоиск и определение типа порта, определение основных настроек камеры для получения трансляции
После определения портов можно получить адреса трансляций из камеры и получить картинку в приложении

После определения портов можно получить адреса трансляций из камеры и получить картинку в приложении
Стандарт PTZ (управление поворотом камеры, а так же оптическим зумом) определяется при обнаружении камеры и портов

Стандарт PTZ (управление поворотом камеры, а так же оптическим зумом) определяется при обнаружении камеры и портов

Часик работы и у меня уже есть приложение, которое самостоятельно находит камеры и подключается к ним, предварительно введя логин и пароль. Не долго думая, проверил, какие камеры имеют управление поворотом, какие ещё и оптический хук — всё автоматически добавляется в приложение. Вылеты при ошибках и прочие баги решались быстро.

Камеры разных производителей, у каждой своя особенность, поэтому для каждой делал анализ и пробовал «вытянуть» в приложение, что получиться. В этой точке я уже превзошёл некоторые бесплатные и даже платные приложения.

Возможность выбирать режимы записи, для режима "обнаружение движения" выбирается область обнаружения, если камера поддерживает это, а приложение поддерживает эту камеру

Возможность выбирать режимы записи, для режима «обнаружение движения» выбирается область обнаружения, если камера поддерживает это, а приложение поддерживает эту камеру

Виджеты — удобный способ мониторить камеры прямо с рабочего стола планшета. Для смартфона так же удобно в случае, когда подъезжаю к дому, смотреть, где парковка свободна. Клик по виджету с изображения камеры.

Добавил в приложение 2 виджета: список камеры для быстрого перехода к ней и плеер трансляции с выбранной камеры

Добавил в приложение 2 виджета: список камеры для быстрого перехода к ней и плеер трансляции с выбранной камеры
Виджеты на рабочем столе планшета

Виджеты на рабочем столе планшета

Чтение с SD карты файлов и загрузка из на устройство-клиент. Тут для разных брендов свои подводные камни. Не каждая камера хочет делиться записями просто так. В одной из камер в обычный mp4 формат дописываются байты, чтобы файл не воспроизводился при обычном скачивании на ПК. Другая камера ещё как-то «портит» свои файлы. Всё прекрасно работает через их приложение, но без него видео посмотреть с SD карты на ПК не получиться. Решено в ходе проб и ошибок в индивидуальном порядке. Некоторые камеры записывали файлы «без подвохов» — с ними проблем не было. В результате в приложении добавил просмотр роликов из архива с выбором даты записи, возможность скачать или удалить файл с SD карты устройства. Отдельно добавил выбор режимов записи, вида: «Постоянная запись», «Запись по движению» с выбором зон из кадра трансляции, если такое сама камера поддерживает.

Авто-обнаружение SD карты и видеоархива на ней

Авто-обнаружение SD карты и видеоархива на ней
Просмотр записей прямо с камеры

Просмотр записей прямо с камеры

Да, единственное, что я не реализовал, но есть, почти, в каждом оригинальном приложении — это подключение и управление камерой вне локальной сети. Компании используют свои серверы для ретрансляции подключения. В моём случае есть внешний IP и проблем с этим нет.

Выложил приложение в открытом доступе ан GitHub, кому будет полезно, забирайте https://github.com/denmedia/denmedia-ip-cams
В описании проекта более подробно о реализованных функциях.

ссылка на оригинал статьи https://habr.com/ru/articles/1102010/