raspberry pi raspberry pi camera mjpg-streamer видеонаблюдение

Raspberry Pi и mjpg-streamer или видеотрансляция с

Это моя первая статья о 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 ответ

    Подскажите, есть ли возможность у данного устройства вести стрим как видео так и аудио потока, с возможность транслировать в сеть? или записи на себя?

Ваш комментарий

Авторизуйтесь для отправки комментария

© Сообщество пользователей RaspberryPi 2021