Делаем NVR регистратор из сломанного телефона на андроиде. Концепция и первые шаги.


Собственно из названия уже понятно что и каким образом я собираюсь делать. Моя задумка собрать NVR видеорегистратор (для ip камер) на базе старого андроид-смартфона.

Небольшая предыстория. Я уже делал несколько вариантов системы видеонаблюдения для своего дома. Что-то работало, что-то нет. В ходе экспериментов я вернулся к классическому варианту - dvr + камеры. Но тут возникли некоторые нюансы которые мне хотелось бы устранить.

Задача простая - через определенные интервалы времени делать снимки с ip камеры, сохранять их на карте памяти и отправлять на фтп сервер. На сервере, используя утилиту Motiontrack, определять наличие движений и при их обнаружении, отправлять снимки себе на email.

Имеющийся у меня видеорегистратор от безымянного китайского производителя не может отправлять снимки на фтп или на email- только видеоролики. К сожалению я не нашел прошивок способных это исправить, поэтому вместо регистратора я задействовал старый ПК под управлением gnu/linux.

Этот вариант хорош всем за исключением одного - энергопотребления. Я засек суточное потребление электроэнергии и пришел к выводу, что видеонаблюдение съест около 500 руб. в месяц. Вроде бы ерунда, но мои доходы за последние месяцы редко превышают 10 тыс, поэтому даже такая сумма будет существенной и это не считая расходов на интернет.

Кроме того, при использовании регистратора или ПК необходимо позаботиться о бесперебойном питании - оборудование работает в деревне, где отключения отнюдь не редки. Для этого нужен ups, а его у меня нет. Но у меня есть несколько старых андроид смартфонов с разбитыми экранами, которые вполне можно использовать для моих задач.

Я достаточно долго искал, но так и не нашел ни одного приложения которое позволило бы мне захватывать снимки из rtsp потока ip камеры и при этом устанавливалось и настраивалось бы из консоли, поэтому решил реализовать что-нибудь свое.

Как понятно из заголовка - этим своим стал консольный вариант ffmpeg для андроида.

Конечно я не сразу пришел к нему. Я не андроид разработчик, поэтому очень переживал, как буду делать реализацию rtsp клиента. Рассматривая варианты интеграции ffmpeg в своем приложение, я натолкнулся на один отличный проект

https://github.com/Khang-NT/ffmpeg-binary-android

Его автор сделал скрипт для конфигурирования и сборки ffmpeg, благодаря которому собрать консольный ffmpeg под андроид сможет даже ребенок. Достаточно лишь выполнить несколько простых шагов:

1.Скачать Android NDK r15 (андроиды у меня старые, версии 4) Тут все понятно. Идем по адресу https://developer.android.com/ndk/downloads/older_releases и качаем.

2. Подкорректировать параметры сборки в скрипте ./build_ffmpeg.sh под собственные требования. В первую очередь в параметр --enable-protocol='file,pipe' добавляем rtp ( --enable-protocol='file,pipe,rtp') Дальше в параметр --enable-demuxer добавляем rtsp (--enable-demuxer='rtsp,aac...)

3. Запустить скрипт сборки, по ходу дела устанавливая отсутствующие зависимости ./build_ffmpeg.sh arm lite /абсолютный путь/build_scripts/build_dir /абсолютный путь/build_scripts/final/arm

Минут через 20 я получил готовый бинарник. Скопировал результат на телефон с помощью adb - adb push ./ffmpeg /storage/sdcard1/ffmpeg А дальше, используя нехитрую команду adb shell '/storage/sdcard1/ffmpeg -i "rtsp://192.168.1.38:554/onvif1" -y -vframes 1 /storage/sdcard1/cam.jpg' делаем снимок с камеры и...

Все получилось, с первого раза. Теперь дело за малым - написать скрипты и провести некоторые аппаратные манипуляции с телефоном, но об этом расскажу чуть позже.


Comments 2


Сюда приплывал Моби Дик

19.08.2018 22:04
0