Видеонаблюдение с помощью Android-смартфона

Бывают порой такие ситуации, когда нужно по-быстрому организовать видеонаблюдение, причём не важно, открытое оно или тайное. Желательно, конечно, со звуком. В качестве «благородного» примера предположим, что надо проследить за ребёнком на время, пока родители в срочном порядке куда-то ушли (редакция настоятельно рекомендует не оставлять маленьких детей без присмотра ). Простейший вариант — оставить включенным компьютер с веб-камерой и запущенным Skype, настроенным на автоматический приём звонков с параллельным включением видео. Однако такой метод имеет ряд недостатков. Придётся оставлять включенным компьютер, да и все ваши шпионские намерения (если таковые имеются) выдаст веб-камера, которая зачастую оснащена светодиодом, светящимся во время работы.

Несколько более оригинальное решение — использование смартфона с Android в качестве следящего устройства. Его и спрятать в подходящем месте гораздо проще, да и свою работу в таком режиме он никак не выдаёт. Можно, в конце концов, просто «случайно» забыть его на столе. Ладно, оставим шпионские игры и перейдём к реализации. Нам понадобится какой-нибудь смартфон на Android с камерой и выходом в Сеть. Если есть ещё один смартфон с Android, тем лучше — на нём удобно просматривать видео с камеры, но его наличие необязательно. Для апробирования метода использовались аппараты Huawei U8230 и Acer beTouch E130 — оба с Android 2.1. На тот смартфон, что будет наблюдать за обстановкой, устанавливаем совершенно изумительную и при том бесплатную программу IP Webcam . Запускаем программу и сразу же настраиваем её под себя. Чем выше разрешение и качество съёмки, тем выше нагрузка на процессор смартфона и больше объём передаваемого трафика, а значит и задержки при передаче видеопотока. Передача звука ещё больше нагружает аппарат, а задержки аудиопотока очень велики — до нескольких секунд. Опции скрытия работы IP Webcam в фоновом режиме и запрета перехода в режим ожидания лучше включить.

Опционально задаются логин и пароль для доступа к определённым функциям, а также меняется порт, на котором работает встроенный веб-сервер.

После изменения настроек запускаем трансляцию. На экране отображается видео с камеры, а по нажатию кнопки «Действия» доступны дополнительные функции. В частности, нас интересует режим маскировки, в котором IP Webcam мимикрирует под веб-браузер. В этом режиме нажатие кнопки «Домой» переключает программу в фоновый режим, а кнопки «Назад» останавливает вещание и открывает реальный веб-браузер.

Обратите внимание, что после запуска программы на экране также отображается адрес и порт сервера, на который надо зайти с помощью браузера. К сожалению, адрес показывается не всегда верный, поэтому лучше узнать IP смартфона с помощью, к примеру, веб-интерфейса вашего роутера, если аппарат по Wi-Fi подключён именно к нему. Или же кликнуть в настройках Wi-Fi в самом устройстве по точке доступа, к которому оно подсоединено. Непосредственно в веб-интерфейсе IP Webcam представлены ссылки на множество способов просмотра live-изображения. Тут, в общем, всё понятно и описывать особенного нечего — для некоторых пунктов даже есть встроенная инструкция.

Если у вас есть второй Android-смартфон и вы находитесь в той же локальной сети, что и наша импровизированная шпионская камера, то на него для удобства можно поставить бесплатную версию утилиты tinyCam Monitor . В настройках приложения надо добавить камеру, указав в качестве типа IP Webcam for Android и задав там же IP-адрес (или имя хоста) и порт, которые были указаны ранее.

После настройки в меню «Просмотр» станет доступным изображение с камеры второго смартфона.

Если же вам надо получить доступ к камере извне, то на роутере надо сделать проброс соответствующего порта (у нас это 8080) и настроить DDNS. А в настройках tinyCam Monitor или при работе через веб-браузер указать как раз DDNS-имя или внешний статический IP-адрес, если таковой имеется. Другое дело, что не все провайдеры вообще выдают свои клиентам внешние IP. Это же касается и подключения к Сети через 3G-соединение — мобильные операторы либо просят существенных (для нашей задачи) денег, либо выдают IP из своей внутренней сети. Обойти это ограничение можно с помощью VPN-подключения к какому-нибудь внешнему серверу. Например, в облаке Amazon . Тем, кто поднимал такой сервер по приведённой инструкции, рекомендуется освежить свою память, ещё раз пробежавшись по ней. Нам придётся немного подправить настройки. Во-первых, в файле /etc/ppp/chap-secrets добавить как минимум ещё одного пользователя с указанием постоянного IP из внутренней VPN-сети.

sudo nano /etc/ppp/chap-secrets

Для клиентов мы тогда использовали диапазон 192.168.244.2-9.

and_username1 pptpd and_password1 192.168.244.4

Во-вторых, подредактируем файл /etc/ppp/pptpd-options:

sudo nano /etc/ppp/pptpd-options

Так как VPN клиент в Android 2.1, судя по всему, собран без поддержки MPPE, то надо закомментировать (поставить # в начале) строку require-mppe-128.

Перезапускаем наш pptpd:

sudo service pptpd restart

Теперь настраиваем подключение в смартфоне. Для этого идём в настройки беспроводных сетей, в раздел VPN, где добавляем новое PPTP-подключение. Указываем его имя, в качестве сервера прописываем DDNS-имя сервера в Amazon (у нас в примере это был amazec2.dyndns-ip.com) и отключаем шифрование.

Сохраняем настройки и кликаем по свежесозданному подключению. Нас попросят ввести логин и пароль (их мы задали чуть выше, добавив нового пользователя). Дальше есть два варианта. Либо мы подключаемся к VPN-серверу с другого смартфона, планшета, компьютера и так далее. В этом случае наша камера доступна по адресу внутри VPN-сети (в нашем примере это 192.168.244.4) и на том же порту, так что во всех местах (в том же tinyCam, например) не забудьте поменять соответствующие настройки. Второй вариант — проброс портов с внутреннего IP на внешний интерфейс. Для этого выполним парочку команд:

sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 192.168.244.4:8080
sudo iptables -A FORWARD -i eth0 -d 192.168.244.4 -p tcp --dport 8080 -j ACCEPT

Поменяйте 192.168.244.4 и 8080 на ваши IP-адрес и порт. На будущее добавим команды в конец файла /etc/rc.local

sudo nano /etc/rc.local

Наконец, в консоли AWS в разделе Security Groups откроем нужный нам TCP-порт для доступа.

Очевидно, что в таком случае достучаться к смартфону можно откуда угодно по DDNS-имени сервера в Amazon и указанному порту (в примере amazec2.dyndns-ip.com:8080). Собственно говоря, это не единственный выход из ситуации с отсутствием внешнего IP-адреса. Можно, например, поднять SSH-туннель или как-нибудь ещё «достучаться» до видеотрансляции. Да и IP Webcam — далеко не единственная утилита для организации видеонаблюдения. В общем, если вам интересна данная тематика, то у вас есть широкое поле для собственных изысканий на этой почве. Так что удачных вам экспериментов и помните, что шпионить во вред нехорошо!