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

Часик работы и у меня уже есть приложение, которое самостоятельно находит камеры и подключается к ним, предварительно введя логин и пароль. Не долго думая, проверил, какие камеры имеют управление поворотом, какие ещё и оптический хук — всё автоматически добавляется в приложение. Вылеты при ошибках и прочие баги решались быстро.
Камеры разных производителей, у каждой своя особенность, поэтому для каждой делал анализ и пробовал «вытянуть» в приложение, что получиться. В этой точке я уже превзошёл некоторые бесплатные и даже платные приложения.
Виджеты — удобный способ мониторить камеры прямо с рабочего стола планшета. Для смартфона так же удобно в случае, когда подъезжаю к дому, смотреть, где парковка свободна. Клик по виджету с изображения камеры.
Чтение с SD карты файлов и загрузка из на устройство-клиент. Тут для разных брендов свои подводные камни. Не каждая камера хочет делиться записями просто так. В одной из камер в обычный mp4 формат дописываются байты, чтобы файл не воспроизводился при обычном скачивании на ПК. Другая камера ещё как-то «портит» свои файлы. Всё прекрасно работает через их приложение, но без него видео посмотреть с SD карты на ПК не получиться. Решено в ходе проб и ошибок в индивидуальном порядке. Некоторые камеры записывали файлы «без подвохов» — с ними проблем не было. В результате в приложении добавил просмотр роликов из архива с выбором даты записи, возможность скачать или удалить файл с SD карты устройства. Отдельно добавил выбор режимов записи, вида: «Постоянная запись», «Запись по движению» с выбором зон из кадра трансляции, если такое сама камера поддерживает.
Да, единственное, что я не реализовал, но есть, почти, в каждом оригинальном приложении — это подключение и управление камерой вне локальной сети. Компании используют свои серверы для ретрансляции подключения. В моём случае есть внешний IP и проблем с этим нет.
Выложил приложение в открытом доступе ан GitHub, кому будет полезно, забирайте https://github.com/denmedia/denmedia-ip-cams
В описании проекта более подробно о реализованных функциях.
ссылка на оригинал статьи https://habr.com/ru/articles/1102010/