Это моя первая статья о Raspberry Pi.
Сначала думал сделать IP-камеру для наблюдения за машиной под окном, но угол обзора у камеры всего около 30 градусов. Потом думал сделать видеоняню и столкнулся с тем , что светочувствительность никакая. Даже ночник не помог. В итоге просто сделал камеру с доступом по сети ради простого любопытства.
Часть первая. Установка необходимого ПО
Что использовалось:
Raspberry Pi, Raspberry Camera module, приложение для смартфона (на Android) IP Cam Viewer, программа захвата видео и трансляции в сетьmjpg-streamer
По поводу установки образа на «малину» я ничего писать не буду, поскольку это уже много раз описывалось.
Подразумевается, что Вы уже умеете это делать. Итак приступим.
Подключаемся по SSH к «малине» и первое, что мы делаем это запускаем обновление
sudo apt-get update
sudo apt-get upgrade
(процедура длительная, наберитесь терпения)
Затем заходим вraspi-configи включаем поддержку камерыsudo raspi-config
меняем значение с Disable на Enable
Перезагружаемся, снова коннектимся и устанавливаем дополнительные библиотеки и приложения, которые нужны дляmjpg-streamer:
sudo apt-get install libjpeg8-dev
sudo apt-get install cmake
wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
разархивируем
unzip ./master –d ./ms
(ms я взял сам, чтобы не писать постоянно полное имя)
Переходим в папку
cd /ms/mjpg-streamer-master/mjpg-streamer-experimental
и собираем
make clean all
Изменяем файлstart.shкомандой
sudo nano ms/mjpg-streamer-master/mjpg-streamer-experimental/start.sh
убираем две незакомментрованные строки и пишем вместо них вот эти
cd etc/ms/mjpg-streamer-master/mjpg-streamer-experimental
./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100"
должно получиться вот так
"./output_http.so -w ./www"– вывод изображения на вебсервер
"./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100"-- захват видео с камеры и параметры захвата (640х480, 10 к/с, экспозиция АВТО, автобаланс белого, вертикальная синхронизация и ISO 100). На самом деле все эти параметры можно убрать, оставив только разрешение и частоту кадров, остальное эт просто опции.
Далее выходим из редактора nano командойCtrl+X, затемEnter(соглашаемся с изменением) иY(да). Находясь в папкеmjpg-streamer-experimentalзапускаем наш скрипт./start.sh
Должно запуститься и в консоли увидите следующее:
и светодиод на камере должен загореться.
Выход командойCtrl+C. Скрипт остановится и светодиод погаснет.
Далее с браузера заходим по такой ссылке:http://ip-address-raspberry:8080/?action=stream(где ip-address-raspberry – это IP Вашей «малины»)и попадаем на вебсервер, нажимаем на Stream.
Естественно Ваши устройства должны быть в одной сети: компьютер с Putty, «малина» и телефон с Ip Cam Viewer. Если Ваш комп не видит малину, Но Вы точно знаете что SSH имеет доступ, то вероятно у Вас роутер блокирует связь между устройствами. Я так однажды попал. Не наступайте на те же грабли :)
Теперь нам надо подключиться с телефона к нашей камере. Я использовал программу IP Cam Viewer, так как она содержит богатый функционал.
Что там нужно сделать, так это только добавить Вашу камеру :
нажимаем «меню», «управление камерами», затем «+» для добавления новой камеры, выбираем «стандартный адрес», Имя: любое; Производитель «Generic URL»; Модель «Generic URL»; URL «вписываем точно такой же адрес «: http://ip-address-raspberry:8080/?action=stream», затем нажимем «Тест» и если изображение с камеры получено, то сохраняем.
Теперь о настройках камеры. Сама камера тоже имеет много настроек изображения. Начиная от разрешения и частоты кадров, заканчивая наложением всяких эффектов. Подробно можно вязть описание с ресурса https://github.com/jacksonliam/mjpg-streamer/blob/master/README.md
Собственно с этого ресурса я взял всю информацию по настройке. Как Вы заметили, я взял разрешение камеры 640х480 и частоту кадров 10 к/с. Максимально возможные эти параметры 1920х1080х30.
Собственно вот результат:
А это на телефоне:
Комментариев: 62
crazysova7
15.04.2014 в 17:54 ответСпасибо всё чётко и подробно.
Ivanserov8
15.04.2014 в 17:55 ответЭто мой первый пост, поэтому некоторые картинки у меня не вышло загрузить нормально. Если, что непонятно, постараюсь ответить.
kolya04
09.05.2014 в 19:34 ответСтатья интересная, но практически не получилось. после " unzip ./master –d ./ms " ответил «Archive: ./master.zip 45996ba372e6d87d82dd8338992996758fa7d376 caution: filename not matched: .d caution: filename not matched: ./ms» и на дальше все пошло с ошибками
ViZord1
11.05.2014 в 08:05 ответА вот если это-же наберешь с клавы а не Ctrl-C — Ctrl-V, то заработает. В этой строке символ "-" не тот по ascii. (обычный 45, а этот 8211). Для человеческого глаза это один символ, а для линукса это разные символы. :)
kolya04
11.05.2014 в 11:29 ответЗдравствуйте ViZord1, спасибо что ответили, но у меня после следующего шага опять все на так. после «cd /ms/mjpg-streamer-master/mjpg-streamer-experimental» отвечает "-bash: cd: /ms/mjpg-streamer-master/mjpg-streamer-experimental: No such file or directory"
ViZord1
11.05.2014 в 11:43 ответа тогда вместо «cd /ms/mjpg-streamer-master/mjpg-streamer-experimental» можно попробовать «cd ./ms/mjpg-streamer-master/mjpg-streamer-experimental»
kolya04
11.05.2014 в 12:29 ответпопробовал, получилось. после "./start.sh" написал что запустилось, но через браузер не могу ничего увидеть, По поводу того, что роутер что-то не пропускает, месяц назад пробовал запустить видеопоток на вебке, тогда все заработало, но не устроило качество вебки, и тогда все снес, сейчас все по-новой и ничего не устанавливал.Кстати, при запуске горит индикатор на самой камере, а видео почему-то нет.
Ivanserov8
19.09.2014 в 16:26 ответтогда просто unzip master.zip
kolya04
11.05.2014 в 13:45 ответвсе заработало, но задержка приличная, я бы сказал больше чем с вебкой, порой 3-4 сек. использовать для мобильной платформы, с управление через сеть ну очень тормознуто все будет
Ivanserov8
12.05.2014 в 13:45 ответзадержка естественно будет. Если нужно уменьшить задержку, то надо понизить качество видео. Задержка практически пропадает на разрешении 640х480, а также можно уменьшить частоту кадров до 15 к/с
kolya04
14.05.2014 в 15:01 ответТак и стояло 640х480, кадров не помню, но судя по тому что видео было с рывками явно меньше 25 кадров, но заметил если малина через Ethernet-кабель что задержки нет.
Ivanserov8
14.05.2014 в 23:45 ответвозможно у Вашего роутера не хватает производительности или у Вас WiFi-USB может не справляется с нагрузкой
OsDima
11.05.2014 в 14:33 ответУ меня заело на этом пункте pi@raspbmc:/$ make clean all -bash: make: command not found У меня установлено RASBMC и этот пункта «raspi-config» нет
kolya04
11.05.2014 в 14:43 ответне знаю как в RASPBMC, а в RASPBIAN нужно зайти в папку, а потом «make clean all», может и в RASPBMC так же.
Ivanserov8
12.05.2014 в 13:42 ответПереходим в папку cd /ms/mjpg-streamer-master/mjpg-streamer-experimental и собираем make clean all не выходя из этой папки собираем. make нужно установить.
Ivanserov8
12.05.2014 в 13:49 ответsudo apt-get install make
Andy
01.07.2014 в 07:35 ответМожет кто-то пошагово объяснить как mgpg-streamer добавить в автозапуск, чтобы трансляция начиналась при включении RPi и как установить логин-пароль на просмотр видео через сеть ???
Ivanserov8
02.07.2014 в 13:30 ответПочитайте здесь Как из Raspberry Pi сделать живую камеру. . Обязательно прочтите ниже комментарии
Ivanserov8
24.09.2014 в 09:40 ответВнимание! Появились изменения! Пропала поддержка Rasberry Camera. При первой возможности я обновлю статью
alemleon
12.12.2014 в 13:04 ответХорошая статья, но застрял на том, что после запуска скрипта ./start.sh выдается can't cd to ect/ms/mjpg-streamer-master/mjpg-streamer-experimental
Ivanserov8
12.12.2014 в 13:16 ответВозможно опечатка где-то. Ругается на то, что не может перейти в папку по указанному адрессу
alemleon
12.12.2014 в 13:24 ответДело в том, что директории ect/ms/mjpg-streamer-master/mjpg-streamer-experimental у меня нет?
Ivanserov8
12.12.2014 в 13:36 ответа как Вы распаковывали?
alemleon
12.12.2014 в 14:02 ответВыполнял все инструкции, как в статье.
woofer
21.12.2014 в 19:07 ответЗдравствуйте! Вы написали, Если Ваш комп не видит малину, Но Вы точно знаете что SSH имеет доступ, то вероятно у Вас роутер блокирует связь между устройствами Похоже у меня тот самый случай. Малинка и компьютер в одной сети подключены к одному роутеру. Подскажите пожалуйста как победить?
Ivanserov8
21.12.2014 в 20:22 ответОтключите брандмауэр в роутере. Включите DHCP, если отключен.
itsagooddaytodie
21.12.2014 в 21:32 ответСпасибо большое за статью! А может кто нибудь подскажет, где можно сменить порт стрима с 8080 на свой?
apssent
11.01.2015 в 15:12 ответСупер! Спасибо автору. А как можно реализовать просмотр нескольких камер одновременно?
Ivanserov8
11.01.2015 в 17:08 ответНужно прописывать каждую камеру по ip-адресу в программу
apssent
11.01.2015 в 17:33 ответМожно по подробнее?
Ivanserov8
11.01.2015 в 22:14 ответЕсли у Вас несколько «Малин» с камерами, то просто соединяете их через «свитч»(при условии что у них статичные адреса). Если адреса присваиваются по DHCP, то через роутер.
apssent
11.01.2015 в 22:19 ответВы не совсем поняли мой вопрос, я имел ввиду вот что, можно ли к одной малине подключить допустим 2 камеры и просматривать с них изображение? Я где то видел статью, там товарищ к mjpg-streamer подключить две камеры и все работало. Вот хотелось бы узнать как он это сделал.
Ivanserov8
11.01.2015 в 22:27 ответМожно, только вебкамеры тормозить будут. Я с одной пробовал, так понижал разрешение до 640х480 и только тогда становилась приемлемое качество. Вы спросите лучше у того, кто это сделал. А ещё лучше ссылку бы нам скинули сюда
Sanchopancho
18.01.2015 в 22:09 ответОгромная благодарность автору статьи. Все заработало отлично(с учетом некоторых комментариев). По-моему это самая лучшая статья на эту тему во всем интернете. Я до этого просмотрел не менее 5-и статей на разных сайтах. Короче — здесь ничего лишнего и добавить нечего. (если что, я чайник в этих делах).
Ivanserov8
19.01.2015 в 10:22 ответСпасибо!
Sanchopancho
19.01.2015 в 23:19 ответУважаемый Ivanserov8, а не могли бы Вы описать на своем примере рассказать как разместить видео на сайте Народного мониторинга. Из других источников я не могу разобраться в каком файле нужно исправить порт для трансляции. (у меня книжка «Raspberri Pi практическое руководство».)Там хорошо все написано, но мутновато.
Ivanserov8
20.01.2015 в 01:04 ответОпишите, пожалуйста, топологию Вашей сети: внешний (белый) IP имеется? Сможете настроить проброс портов на роутере? Вкратце опишу: имеем нашу камеру с поротом вывода 8080. Подключаем её к роутеру и получаем от него по DHCP IP для камеры. Далее на роутере настраиваем маршрутизацию на этот IP и указываем порт назначения 8080. Далее в народном мониторинге добавляете Вашу камеру но с белым IP-адресом и портом 8080. Адрес будет такой «yourip:8080/?action=stream». Я не задавался такой целью, поэтому это только в теории.
Ivanserov8
20.01.2015 в 01:06 ответРади интереса куплю внешний IP у провайдера и попробую все на деле.
Sanchopancho
20.01.2015 в 11:17 ответОчень благодарен за внимание к чайнику. Я пока переварю Ваш ответ. А там видно будет. Тоесть, как я понял, мне всего лишь нужно инициализировать порт в роутере 8080. А белый IP-адрес это внешний, а не локальный?
Ivanserov8
20.01.2015 в 11:27 ответДа это внешний. Все правильно поняли. Когда Вы будете в народном мониторинге указаывать Ваш внешний IP, то роутер автоматически переадрессует на локальный IP. В этом и есть суть проброса портов
Sanchopancho
20.01.2015 в 11:30 ответ… так. Теперь еще пару часиков с бубном попляшу…
Sanchopancho
20.01.2015 в 21:09 ответУважаемый Ivanserov8. С Вашей подсказкой, Божьей помощью и бубном все у меня заработало. С народного мониторинга получаю снимки. А по сети изображение почти без задержки. Премного благодарен!
Ivanserov8
20.01.2015 в 21:14 ответОчень рад, что Вам помогли мои советы! Удачи в Ваших проектах.
Sanchopancho
21.01.2015 в 23:58 ответУважаемый Ivanserov8. А не подскажете ли Вы как установить файл start.sh в автозапуск. Я пробовал вставлять скрипт от Time-lapse камеры в /etc/rc.lokal — программа автоматически запускалась при включении Малины. А вот start.sh почему-то не запускается.И еще (если я Вам не надоел) — как находясь в консоли можно удалить системный файл. Или, если есть такая возможность, из-под графической оболочки.
Ivanserov8
27.02.2015 в 11:32 ответя добавлял файл в init.d и автозапуск получался. Если используются два скрипта к одной камере, то естественно будет работать только тот скрипт, который первым запустился и инициализировал камеру. Удаление файлов команда rm под суперпользователем root.
titanium
26.01.2015 в 13:39 ответПроблема с запуском с параметром -b (backgound mode) — пишет «forked to background (3324)» но такого процесса нет. А так две камеры не стартуют- только одна.
RelMayer
27.02.2015 в 04:49 ответНа данный момент 27.02.2015. Когда распаковываешь, то все оказывается в деректории home/pi/ там лежит ms, но не в etc/ms По этой причине не находит его командой cd /etc/ms/mjpg-streamer-master/mjpg-streamer-experimental так как его там нету. Как я исправил эту проблему, через WinSCP. Зашел с правами root. Переместил папку в раздел /etc/ Но у меня появилась такая проблема. Не знаю что мне делать... pi@raspberrypi /etc/ms/mjpg-streamer-master/mjpg-streamer-experimental $ ./start.sh ./start.sh: 29: ./start.sh: ./mjpg-streamer: not found
RelMayer
27.02.2015 в 05:11 ответ./start.sh: 29: ./start.sh: ./mjpg_streamer: not found
Ivanserov8
27.02.2015 в 11:36 ответ29 — это строка в скрипте, где ошибка. Надо внимательно проверить путь. Потому как если Вы перенесли скрипт в другое место, то и путь в скрипте должен поменяться, поэтому и пишет not found
Ivanserov8
27.02.2015 в 11:34 ответкопирование в другую папку командой cp -R. Например cp -R ms /etc скопирует папку ms в /etc
RelMayer
27.02.2015 в 23:30 ответСпасибо большое! Все получилось, но вышла еще одна проблема, у меня Wi-Fi отключается автоматически после 2-3 мин работы с этим приложением. Точно так же с Ethernet подключением. Прим том, что я настроил, чтоб Wi-Fi не отключался вообще: cat /sys/module/8192cu/parameters/rtw_power_mgnt Чтобы отключить функцию управления питанием, нужно создать новый файл: sudo nano /etc/modprobe.d/8192cu.conf и прописать строку options 8192cu rtw_power_mgnt=0 де 0 — Управление питанием отключено
Sanchopancho
07.03.2015 в 20:58 ответУважаемый Ivanserov8. Подскажите пожалуйста что означает параметр -R при копировании и какие еще бывают параметры. И еще какой папирус мне почитать чтобы не задавать глупые вопросы. Огромное спасибо.
Ivanserov8
07.03.2015 в 21:54 ответ-R Если исходный_файл указывает на каталог, cp копирует этот каталог вместе со всем деревом файловой иерархии, которое он содержит. Ес- ли исходный_файл оканчивается на /, копируется не сам каталог, а только его содержимое. Эта опция также указывает на необходимость копирования символических ссылок, а не объектов, на которые они указывают, и заставляет cp создавать специальные файлы вместо того, чтобы копировать их, как обычные. Создаваемые каталоги имеют те же права доступа, что и исходные каталоги, вне зависимости от действу- ющего для процесса значения umask. Я читаю книги Колесникова. Хороший писатель.
RelMayer
11.03.2015 в 09:12 ответУважаемый Ivanserov8. Не можете подсказать, в чем причина, когда запускаю скрипт ./start.sh. То через некоторе время Raspberry Pi абсолютно зависает.
Ivanserov8
11.03.2015 в 11:29 ответА в чём проявляется зависание? Дистрибутив обновляли?
RelMayer
11.03.2015 в 18:13 ответПоследовательность как я настраивал малинку. Установил ОС, настроил сразу в настройках камеру, SSH. Обновил: sudo apt-get update sudo apt-get upgrad установил точно время типа sudo date -s «8 JAN 2015 12:00:00». обновил ядро sudo rpi-update Настроил удаленный доступ, через Ethernet кабель и через Wi-Fi Исправил проблему с Wi-Fi, он теперь работает постоянно целые сутки, а раньше тоже через некоторое время отключался из за того, что малинка его отключала от питания. Установил для удаленного доступа sudo apt-get install xrdp. Установил sudo apt-get install apache2 php5 libapache2-mod-php5 Дальше все как вы описали по посту делал только с некоторыми проблемами, что я указал выше. Программа запустилась, Raspi Cam вела стрим, но через некоторое время малинка зависает, на сайт не заходит, графический интерфейс не реагирует не на что(мышку, клавиатуру). На камере самой, горит светодиод и на малинке тоже горят.
Ivanserov8
11.03.2015 в 18:18 ответВ общем вот Январское обновление Raspberry Pi, ломающее стример
RelMayer
11.03.2015 в 18:51 ответСпасибо!
faraday
23.04.2015 в 22:34 ответПрочитав статью не совсем понял, интересуют два вопроса: 1) можно ли транслировать видео 720p/30 при подключении малинки по ethernet? 2) можно ли архивировать видеофайл на внешний диск, или скажем на диск расшаренный по сети?
Ivanserov8
23.04.2015 в 22:59 ответ1) Да, конечно можете. 2) Средствами mjpg-streamer нельзя. Но Вы можете взять поток с «малины» другой программой. Я взял IP Can viewer. Можете попробовать прикрутить motion прям на самой «малине». Motion имеет гораздо больший функционал и предназначена для построения видеонаблюдения. Ещё есть AVReg. Отечественная разработка. Работает только на linux-машинах. Вся документация на русском.
Rikigreak
23.10.2017 в 12:35 ответЗдравствуйте Ivanserov8 !Хорошая статья !Помогите не могу понять При выполнении командыsudo apt-get install libjpeg8-devпроизводит следующее:produces the following:Reading package lists ... DoneBuilding dependency treeReading state information ... DonePackage libjpeg8-dev is not available, but is referred to by another package.This may mean that the package is missing, has been obsoleted, oris only available from another sourceHowever the following packages replace it:libjpeg62-turbo-devE: Package 'libjpeg8-dev' has no installation candidateмогу ли я установить libjpeg62-turbo-devas?это нормально ?Я установил libjpeg62-turbo-devДалее там следуя инструкции все сделал но в каталоге mjpg-streamer-experimentalнет папки mjpg_streamerпоэтому если менять две строчки убираем две незакомментрованные строки и пишем вместо них вот эти cd etc/ms/mjpg-streamer-master/mjpg-streamer-experimental ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100"то при выполнении не находит этой папки если меняю название mjpg_streamer на другие которые есть то говорит ./start.sh: 32: ./start.sh: ./Makefile: Permission denied ну и я там разные каталоги пробовал тоже самое Все делаю из под root через sshТакже когда выполняю вот эту команду root@raspberrypi:/etc/ms/mjpg-streamer-master/mjpg-streamer-experimental# make clean allТоже ругается [ ! -f _build/Makefile ] || make -C _build cleanrm -f mjpg_streamer *.so[ -d _build ] || mkdir _build[ -f _build/Makefile ] || (cd _build && cmake -DCMAKE_BUILD_TYPE=Release ..)Illegal instructionMakefile:17: recipe for target 'all' failedmake: *** [all] Error 132Подскажите как решить проблему ?Спасибо.
denik
13.05.2018 в 15:39 ответПодскажите, есть ли возможность у данного устройства вести стрим как видео так и аудио потока, с возможность транслировать в сеть? или записи на себя?