среда, 12 августа 2015 г.

Собираем motion с поддержкой RTSP IP камеры HAREX для Raspberry Pi

После приобретения IP камеры HAREX 1MP 720P оказалось что motion (программа для записи изображения с камер наблюдения/usb-камер) не подхватывает камеры у которых потоковый протокол реального времени.
Для поддержки таких камер, нужно собрать особый ffmpeg и motion.





Приступим. Для начала нужно выполнить обновление системы:

  • sudo rpi-update
После обновления ядра необходимо перезагрузить малину
  • sudo reboot
Обновляем установленные пакеты и устанавливаем  

  • sudo apt-get update
  • sudo apt-get upgrade 
  • sudo apt-get install libjpeg-dev
Перезагружаем

Затем удаляем старые пакеты. А именно эти: x264, libx264-dev, libavcodec, libavcodec, libavfilter, libavfilter, libavresample, libavutil, libpostproc, libswresample, libswscale, ffmpeg

Чтобы найти что удалять, воспользуемся поиском
  • dpkg -S x264 libx264-dev libavcodec libavfilter libavresample libavutil libpostproc libswresample libswscale ffmpeg 
Будет примерно так:

pi@raspberrypi ~ $ dpkg -S x264 libx264-dev libavcodec libavfilter libavresample libavutil libpostproc libswresample libswscale ffmpeg
libx264-123:armhf: /usr/share/doc/libx264-123
libx264-130:armhf: /usr/share/doc/libx264-130
libx264-130:armhf: /usr/lib/arm-linux-gnueabihf/x264-10bit
libx264-130:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.130
libx264-130:armhf: /usr/share/doc/libx264-130/copyright
libx264-130:armhf: /usr/share/doc/libx264-130/changelog.Debian.gz
libx264-123:armhf: /usr/lib/arm-linux-gnueabihf/libx264.so.123
libx264-130:armhf: /usr/lib/arm-linux-gnueabihf/libx264.so.130
libx264-123:armhf: /usr/share/doc/libx264-123/copyright
libx264-123:armhf: /usr/share/doc/libx264-123/changelog.Debian.gz
libx264-130:armhf: /usr/lib/arm-linux-gnueabihf/x264-10bit/libx264.so.130
dpkg-query: no path found matching pattern *libx264-dev*
libavcodec53:armhf: /usr/share/doc/libavcodec53/codecs.txt.gz
libavcodec53:armhf: /usr/share/doc/libavcodec53/changelog.Debian.gz
libavcodec53:armhf: /usr/lib/arm-linux-gnueabihf/libavcodec.so.53.35.0
libavcodec54:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.54
libavcodec53:armhf: /usr/share/doc/libavcodec53/README.Debian.gz
libavcodec54:armhf: /usr/share/doc/libavcodec54/codecs.txt.gz
omxplayer: /usr/lib/omxplayer/libavcodec.so.56.13.100
omxplayer: /usr/lib/omxplayer/libavcodec.so.56
libavcodec53:armhf: /usr/share/doc/libavcodec53
libavcodec54:armhf: /usr/share/doc/libavcodec54
libavcodec54:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.54.35.0
libavcodec53:armhf: /usr/share/lintian/overrides/libavcodec53
libavcodec54:armhf: /usr/share/lintian/overrides/libavcodec54
libavcodec53:armhf: /usr/lib/arm-linux-gnueabihf/libavcodec.so.53
libavcodec54:armhf: /usr/lib/arm-linux-gnueabihf/libavcodec.so.54
libavcodec53:armhf: /usr/share/doc/libavcodec53/changelog.gz
libavcodec53:armhf: /usr/share/doc/libavcodec53/copyright
libavcodec54:armhf: /usr/lib/arm-linux-gnueabihf/libavcodec.so.54.35.0
libavcodec54:armhf: /usr/share/doc/libavcodec54/changelog.Debian.gz
omxplayer: /usr/lib/omxplayer/libavcodec.so
libavcodec54:armhf: /usr/share/doc/libavcodec54/changelog.gz
libavcodec54:armhf: /usr/share/doc/libavcodec54/copyright
omxplayer: /usr/lib/omxplayer/libavfilter.so
omxplayer: /usr/lib/omxplayer/libavfilter.so.5.2.103
omxplayer: /usr/lib/omxplayer/libavfilter.so.5
dpkg-query: no path found matching pattern *libavresample*
libavutil52:armhf: /usr/share/doc/libavutil52/changelog.gz
libavutil51:armhf: /usr/share/doc/libavutil51/changelog.Debian.gz
libavutil51:armhf: /usr/lib/arm-linux-gnueabihf/libavutil.so.51
libavutil52:armhf: /usr/lib/arm-linux-gnueabihf/libavutil.so.52
libavutil51:armhf: /usr/share/doc/libavutil51
libavutil52:armhf: /usr/share/doc/libavutil52
libavutil51:armhf: /usr/share/doc/libavutil51/copyright
libavutil51:armhf: /usr/share/lintian/overrides/libavutil51
libavutil52:armhf: /usr/share/lintian/overrides/libavutil52
omxplayer: /usr/lib/omxplayer/libavutil.so.54.15.100
omxplayer: /usr/lib/omxplayer/libavutil.so
libavutil52:armhf: /usr/share/doc/libavutil52/copyright
libavutil51:armhf: /usr/share/doc/libavutil51/README.Debian.gz
omxplayer: /usr/lib/omxplayer/libavutil.so.54
libavutil52:armhf: /usr/lib/arm-linux-gnueabihf/libavutil.so.52.3.0
libavutil51:armhf: /usr/lib/arm-linux-gnueabihf/libavutil.so.51.22.3
libavutil52:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.52
libavutil51:armhf: /usr/share/doc/libavutil51/changelog.gz
libavutil52:armhf: /usr/share/doc/libavutil52/changelog.Debian.gz
libavutil52:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.52.3.0
dpkg-query: no path found matching pattern *libpostproc*
omxplayer: /usr/lib/omxplayer/libswresample.so
omxplayer: /usr/lib/omxplayer/libswresample.so.1
omxplayer: /usr/lib/omxplayer/libswresample.so.1.1.100
libswscale2:armhf: /usr/share/doc/libswscale2/changelog.Debian.gz
omxplayer: /usr/lib/omxplayer/libswscale.so
libswscale2:armhf: /usr/share/doc/libswscale2/changelog.gz
omxplayer: /usr/lib/omxplayer/libswscale.so.3
libswscale2:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.2
libswscale2:armhf: /usr/share/doc/libswscale2/copyright
libswscale2:armhf: /usr/share/doc/libswscale2
omxplayer: /usr/lib/omxplayer/libswscale.so.3.1.101
libswscale2:armhf: /usr/share/lintian/overrides/libswscale2
libswscale2:armhf: /usr/lib/arm-linux-gnueabihf/libswscale.so.2.1.1
libswscale2:armhf: /usr/lib/arm-linux-gnueabihf/libswscale.so.2
libswscale2:armhf: /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.2.1.1
gstreamer0.10-plugins-base:armhf: /usr/lib/arm-linux-gnueabihf/gstreamer-0.10/libgstffmpegcolorspace.so


Удаляем что нашли, у меня были такие пакеты: libx264 omxplayer libavcodec libavutil libswscale gstreamer
  • sudo apt-get purge libx264* omxplayer* libavcodec* libavutil* libswscale* gstreamer*
Проверяем чтобы ничего не осталось
  • ldconfig -p | grep libx264 omxplayer libavcodec libavutil libswscale gstreamer
 Качаем, компилируем и устанавливаем libx264
  • git clone git://git.videolan.org/x264.git
  • cd x264
  • ./configure --enable-shared --disable-opencl
  • make
  • sudo make install && sudo ldconfig
  • cd ..
Качаем, компилируем и устанавливаем ffmpeg с поддержкой x264

Тут хочу вас предупредить, запаситесь терпением, так как копмилироваться ffmpeg будет несколько часов (у меня вышло 6 часов на В+ с разогнанным CPU до 1ГГц)
  • git clone git://source.ffmpeg.org/ffmpeg.git
  • cd ffmpeg
  • ./configure --arch=armhf --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-shared
  • make
  • sudo make install && sudo ldconfig
  • sudo reboot
Качаем, компилируем и устанавливаем форк Mr-dave’s Motion
  • git clone https://github.com/Mr-Dave/motion.git
  • cd motion
  • ./configure
  • make
  • sudo make install && sudo ldconfig
Пробуем запустить motion.
Выдает ошибку что не может прочитать конфиг - файл
[0] [ALR] [ALL] conf_load: could not open configfile /usr/local/etc/motion/motion.conf: No such file or directory

 Переходим в каталог /usr/local/etc/motion/
  • cd /usr/local/etc/motion/
Смотрим что конфиг есть, но он не правильно подписан. Мы делаем копию и переименовываем в motion.conf
  • sudo cp motion-dist.conf motion.conf
Редактируем motion.conf. В интернете полно вариантов настройки, я покажу ту часть, что касается именно камеры.
  • sudo nano motion.conf
 Закомментируем строку
  • ;videodevice /dev/video0
И раскомментируем следующие строки и укажем логин/пароль от камеры и пусть к её потоку. У меня вышло так
  • netcam_url rtsp://192.168.1.218:554/user=admin&admin=&channel=1&stream=0.sdp?
  • netcam_userpass admin:admin
 Еще нужно указать что у нас не USB камера
  • input -0
Запускаем
  • sudo motion
Результат:




10 комментариев:

  1. Анонимный17 мая 2016 г., 13:01

    Привет кинуть свой конфиг, твоя едеинственная которую нашел, не получается пройти к motion подключить каммеру rtsp с basic авторизацией. помоги )
    мое мыло sajor2006@yandex.ru

    ОтветитьУдалить
    Ответы
    1. Смысл? Все работает если делать четко по инструкции.

      Удалить
    2. Анонимный15 июня 2016 г., 17:24

      Как делать четко по инструкции, если в исходниках нет Makefile?

      Удалить
    3. Я три раза делал по собственному мануалу - все ок.

      Удалить
  2. netcam_url rtsp://192.168.1.218:554/user=admin&admin=&channel=1&stream=0.sdp? - ошибка
    Должно быть rtsp://192.168.1.218:554/user=admin&password=&channel=1&stream=0.sdp?

    ОтветитьУдалить
  3. в последних(видимо) версиях при установке motion необходимо перед ./configure добавить autoreconf -fiv установив соответствующие пакеты, иначе небудет ./configure, а так статья супер, с небольшими изменениями все заработало и я немного удевлен, потому что подобное делал на pc nginx rtsp так там ресурсов съедало в разы больше, а тут ещё можно нагружать!!! плюс детектор движения, камеры и тд, весь функционал

    ОтветитьУдалить
  4. Raspberry Pi B+ и китайская камера 1280x720 только с rtsp.
    Сделал всё как написано. Перед ./configure добавил autoreconf -fiv установив соответствующие пакеты. Заработало.
    Но толку мало, motion грузит проц на 100%.

    ОтветитьУдалить
  5. Столкнулся с проблемой постоянной перезагрузки камеры HAREX когда на PI установлен и работает Mr-dave’s Motion и motionEye. Что именно ребутит не разобрался пока, но когда малину выключаю и смотрю с компа всё нормально работает без перезагруза.
    Хочу всё снести и попробывать установить всё сначала, благо бэкапы есть.
    Кто что подскажет?

    ОтветитьУдалить
  6. Добрый день,никто не сталкивался с такой проблемой,при компиляции выдает No working C compiler found.

    ОтветитьУдалить