macbook + iSight = мобильный шпион
Предисловие
Посещая мою любимую девушку на прошлой неделе (мы живем в разных городах, на разных побережьях) мы игрались с приложением для моего iPhone Touch под названием Locations. Программка довольно простая — поиск и просмотр веб камер со всего мира. Можно сохранить какое-то количество камер и она их будет периодически обновлять.
Рассматривая камеры в Милане да Париже мне захотелось сделать что-нибудь подобное для себя — онлайн веб камеру. Я подобными вещами никогда раньше не занимался, да и на поиски в интернете времени тратить особенно не хотелось (все что нашел — какие-то сложные сервисы с live video и прочими вкусностями, но всё какое-то слишком перегруженное). Так что решил сделать это сам. В итоге ушло минут 10-15, и вот что мы получили в результате:
Страничку накидал очень быстро, просто чтобы как-то отобразить время последнего обновления.
Как это все работает, и как сделать такоё же
Всё до безобразия просто. Просто — если у вас Макбук. Про остальные системы чуть ниже.
Первым делом нам понадобится isightcapture. Скачиваем, копируем в /usr/bin/.
Далее, нам нужно научиться делать снимки и сохранять их локально. Тут нет ничего сложного: открываем терминал и пишем:
isightcapture ~/current.jpg
Эта команда сделает фотографию того, что видит камера и сохранит её как current.jpg в вашей домашней директории.
Самое интересно состоит в загрузке получившейся фотографии на какой-нибудь сервер. Это так же и является наверное самым сложным этапом. У меня есть домашний сервер с уникальным IP адресом\своим доменом, у кого-то есть свои хостинги с SSH доступом, но у большинства ничего этого нет. Что делать? Читайте самый низ этого поста.
Ну а для тех у кого есть доступ к каким-нибудь серверам — давайте воспользуемся scp. Налаживает необходимые public keys дабы не вопрошало пароль (очень хорошая статья на эту тему), и в терминале пишем:
scp ~/current.jpg media.mywebserver.com:/home/mywebserver/media/webcam/
Эта команда загрузит ваш файл на ваш же сервер в нужное место. Это я тут пишу для полноты рассказа, ведь скорее всего если вам есть куда загружать файл по ssh протоколу вы и без меня знаете как это сделать :)
Автоматизация этих простых двух шагов заключается вот в чем. Первым делом создайте где-нибудь, скажем в ~/Scripts файл под названием, к примеру, webcam.sh. Далее поместите в него обе команды:
#!/bin/bash
isightcapture ~/current.jpg
scp ~/current.jpg media.mywebserver.com:/home/mywebserver/media/webcam/
Первая строка говорит о том, чем именно нужно запускать этот файл. Узнать где у вас находится bash можно написав в Терминале which bash. Сохраните файл, и теперь откройте терминал и добавьте запись в кронтаб (командой crontab -e):
*/1 * * * * sh ~/Scripts/webcam.sh
Это заставит крон вызывать ваш маленький скрипт каждую минуту. Подробнее про крон почитать можно вот тут.
На сервере можно теперь, к примеру, создать веб страничку которая будет отображать картинку current.jpg так как вам этого захочется. Из неё самой можно выдергивать информацию о том когда она была создана. К примеру вот так, на PHP:
Last spied on Grisha: <?php echo date(«F jS, Y @ h:i:s A», filemtime(«current.jpg»)); ?>
Получится то, что видно сверху на скриншоте.
Так как при каждом обновлении с вебкамеры файл перезаписывается, картинка на веб странице тоже будет обновляться вместе с этой информацией.
А если не мак осх?
Конечно же далеко не у всех маки с камерами iSight. Тут я вам не в помощь, так как у меня к сожалению нет времени на поиски консольного софта для снятия фотографий с вебкамер под Windows или даже под другие *nix системы. Наверняка софт какой-нибудь есть, наверняка есть и бесплатный. Многие вебкамеры идут с подобными программки (так мне рассказывали, сам не пробовал — не знаю), так что возможно вы как-нибудь воспользуетесь ими. Пишите в комментарии если хотите поделится инструкциями для других систем, было бы интересно почитать.
А как-нибудь проще можно?
Я понимаю что для многих это по той или иной причине будет не совсем доступно, пусть и достаточно гибко. К примеру, моя любимая теперь сможет смотреть как я работаю или же пью кофе где-нибудь в кафе в гавани Виктории, но вот я не смогу посмотреть как она занимается в центре Торонто. Хотя бы по этому я постепенно начал делать небольшой онлайн сервис, который упростит задачу до двух простых шагов: регистрация + установка маленькой программки. Программка эта будет делать фотографии с камеры и посылать их на сервис, а он же будет их отображать избранным (или же всем подряд) людям. Можно будет настроить временной интервал, степень публичности момента (показывать всем, только друзьям, только избранным), ну и еще пару вещей.
Всё это имеет смысл интегрировать с сервисами вроде Twitter’a (о котором я как-то писал), и тогда получится вполне себе неплохой инструмент для слежки за близкими людьми :)
Следите за обновлениями, думаю через несколько недель запущу что-нибудь для публичного тестирования. Ну или найду что-нибудь готовое и расскажу вам всем об этом =)
katerinka replied:
славно, славно)
29 июля, 2008 at 8:38 дп. Постоянная ссылка.
Xenia replied:
а вы еще не написали прогу-утилиту для мака?? я ооочень хочу, а в терминале ничего не получается. есть готовые…ноони просто делают фото и кидают на http://ftp…т.е. просматривать неудобно. и еще, а реально сделать так, чтобы снимок делать удаленно??? (это, например, удобно как шпион, пока тебя нет дома или еще что ))))
буду ждать ответ на мыло.
28 декабря, 2008 at 11:47 дп. Постоянная ссылка.
qwe replied:
There is more fast way
1. copy isightcapture to /Library/WebServer/CGI-Executables
2. open terminal
3. chmod a+s /Library/WebServer/CGI-Executables/isightcapture
4. :> /Library/WebServer/CGI-Executables/test.sh
5. chmod 755 /Library/WebServer/CGI-Executables/test.sh
6. edit /Library/WebServer/CGI-Executables/test.sh with TextEdit:
#!/bin/bash
exec 2>/dev/null
echo «Content-Type: image/jpeg»
echo
./isightcapture /tmp/qq$$.jpg
exec < /tmp/qq$$.jpg
rm -f /tmp/qq$$.jpg
cat
7. enable web-server sharing in system preferences
8. http://localhost/cgi-bin/test.sh
24 февраля, 2009 at 9:32 пп. Постоянная ссылка.
qwe replied:
блин забыл что я на русском сайте. кароче я по-русски умею говорить )))
24 февраля, 2009 at 9:33 пп. Постоянная ссылка.
grigory replied:
qwe, you’re missing the point, как говорится :)
то есть можно конечно и так, но мне ведь нужно было именно чтобы видно было удаленно что происходит на лэптопе, где бы он ни находился, в любых сетях. Ваш вариант мне лично будет абсолютно бесполезен, ибо толку от того что я могу посмотреть то что видит моя камера на моем же локалхосте который никому кроме меня не доступен? Мой вариант загружает фотографию на публично-доступный сервер, и там уже избранные мне люди получают к ней доступ.
24 февраля, 2009 at 9:55 пп. Постоянная ссылка.
grigory replied:
Xenia, написал, да. Примерно через день после того как написал этот пост :) Я сделал себе widget для дашбоарда, выглядит он примерно вот так:
http://dl.getdropbox.com/u/113816/widget-cam.png (front)
http://dl.getdropbox.com/u/113816/widget-cam-back.png (back)
Если есть интерес, могу подработать его и выложить публично. Я вообще-то хочу все сделать вебсервис который с этим всем будет работать, чтобы действительно кто угодно мог подобное сделать, без каких-либо технических знаний и на любых платформах. Как появится время — думаю сделаю. (переслал это и на имейл)
24 февраля, 2009 at 10:01 пп. Постоянная ссылка.
qwe replied:
локалхост для примера. если на компе реальный белый айпи — то можно на него снаружи подключиться… всяко удобнее чем письмо слать
25 февраля, 2009 at 9:46 пп. Постоянная ссылка.
grigory replied:
В 99% случаев на лэптопах нет реального айпи. Конечно если дома — можно настроить порт форвардинг на раутере, но мне это совершенно не нужно. Задача была в том чтобы где бы я не находился этот мини-сервис — работал бы. И тем более, о каких письмах идет речь? :)
Фотографии посылаются по ssh.
25 февраля, 2009 at 9:55 пп. Постоянная ссылка.
александр replied:
спасибо за добрые и теплые фотографии
30 июня, 2009 at 7:42 дп. Постоянная ссылка.