Motion s Raspberry kamerou

Motion je software pro záznam z kamer, který umí zaznamenávat video i jednotlivé snímky při zjištění pohybu, a současně streamovat téměř živý pohled přes webové rozhraní. Využívá infrastruktury v4l (video for Linux). Pro Raspberry PI a jeho „originální“ kameru dlouho neexistovaly v4l ovladače, pouze řádkové utility raspivid a raspistill. Na internetu naleznete většinou návody, jak rozchodit upravenou verzi motion_mmal. To je naštěstí minulost, už to jde rozchodit „nativně“. Takže začneme nezbytným

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update

(poslední příkaz je aktualizace firmwaru). Pro další předpokládám, že uživatel má zprovozněnou a připojenou kameru, otestovanou například raspistill jako funkční.

Teď se podíváme na zařízení. Zadáme:

pi@raspberrypi ~ $ v4l2-ctl --info

a pokud dostaneme odpověď

Failed to open /dev/video0: No such file or directory

je prozatím všechno v pořádku. Nyní zadáme

sudo modprobe bcm2835-v4l2

a zopakujeme dotaz.Měli bychom dostat výstup podobný následujícímu:

pi@raspberrypi ~ $ v4l2-ctl --info
Failed to open /dev/video0: No such file or directory
pi@raspberrypi ~ $ sudo modprobe bcm2835-v4l2
pi@raspberrypi ~ $ v4l2-ctl --info
Driver Info (not using libv4l2):
 Driver name : bm2835 mmal
 Card type : mmal service 15.1
 Bus info : platform:bcm2835-v4l2
 Driver version: 3.12.25
 Capabilities : 0x85000005
   Video Capture
   Video Overlay
   Read/Write
   Streaming
   Device Capabilities
 Device Caps : 0x05000005
   Video Capture
   Video Overlay
   Read/Write
   Streaming

Takže jsme z ruky nahráli ovladač kamery a máme zařízení /dev/video0. Pokud chceme ovladač nahrát automaticky při restartu, stačí zapsat jeho název, tj. bcm2835-v4l2, na samostatný řádek do souboru /etc/modules. Ten musíme pochopitelně editovat přes sudo, jinak na něj nemáme právo.

Nyní nainstalujeme motion:

sudo apt-get install motion

Nahraje se nám spousta závislých balíčků. Nyní si v oblíbeném editoru otevřeme konfigurační soubor /etc/motion/motion.conf. Ještě si musíme rozmyslet, kam budeme zachycené obrázky, videa atd. ukládat, protože souborový systém by se nám asi rychle zaplnil. Já ukládám na windowsové sdílení, přimountované do /mnt/camera (návod někdy příště). Pro základní otestování změníme pár parametrů.

width 1296
height 1024
framerate 2
pre_capture 2
post_capture 2
gap 60
max_mpeg_time 600

width a height jsou šířka a výška, framerate kolik obrázků za sekundu, pre_ a post_capture je kolik snímků před a po zachyceném pohybu se přidá k záznamu, gap je počet sekund, v jehož rámci se ještě detekce pohybu považuje za jeden „event“, max_mpeg_time je maximální délka jednoho videa. Parametry jsou popsané v komentářích, je možno nahrávat video během pohybu, jednotlivé snímky všechny nebo jeden během pohybu, a pomaloběžné video a snímky s daným intervalem pořád, bez ohledu na to, zda je detekován pohyb. Pokud nám nevyhovuje defaultní formát videa, což je SWF, můžeme se přepnout na microsoftí AVI:

ffmpeg_video_codec msmpeg4

Kam se mají věci ukládat, je zde:

target_dir /mnt/camera

a pokud nemá být živé video přístupné jen z Raspberry samého, nastavíme

webcam_localhost off

Teď už můžeme pustit motion (sudo motion) a připojit se k našemu raspberry prohlížečem na portu 8081 (pokud jsme port nezměnili v konfiguračním souboru). Až si dostatečně vyhrajeme s parametry (přerušení běžícího motion přes Ctrl-C), je možno pustit motion jako démona (to se udělá editací dvou souborů, /etc/default/motion, zde se změní start_motion_daemon=no
na yes, a pak v samotném /etc/motion/motion.conf  je hned ze začátku souboru daemon off, tak to přepíšeme na on).

Budu rád, dáte-li mi vědět, jaké jste udělali zkušenosti s framerate a rozlišením. Já jsem se k běžícímu Raspberry s motion připojil ještě druhým SSH terminálem a pustil jsem si top, a zdá se mi, že vytížení procesoru při rozlišení a frameratu, které jsem uvedl v příkladu, je kolem 1%, čili relativně nízké. Uvědomme si, že chudák Raspberry musí přebírat data z kamery, počítat rozdíly mezi snímky, pak počítat komprese snímků a videa a ještě to ukládat do souborového systému, takže práce dost pro hračku za pár dolarů.

12 komentáře k “Motion s Raspberry kamerou

  1. zdravim, postupoval sem podle navodu a krome toho, ze ukladam obrazky primo na kartu, tak mi to funguje tak, ze mam spozdeni asi 25-30 sekund a jeden obr. za 3-5s. Kdyz sem razantne snizil rozliseni kamery, tak je obraz v prohlizeci temer online, ale zas nic nerozeznam. Neslo by nejak nastavit, aby se nic neukladalo, jen sel kontinuelni online obraz, jak sem zvykly z normalni IP kamery? Nebo kde je chyba?

  2. Ale zpoždění čeho? Jsou prakticky 4 výstupy: 3 do souborů – JPG náhled, AVI s pohybem případně timelapse všeho. A pak je online MJPEG na portu 8081. Záznamy samozřejmě mají zpoždění – musí se detekovat pohyb podle předchozích obrázků a pak spočítat a uložit na disk. A video trvá ještě dýl. Ale ten webový MJPEG sice má určité zpoždění, ale neřekl bych že je to tolik. Samozřejmě pokud se vypne detekce pohybu, bude menší zátěž.

    • vystupu na portu 8081. To co mi z toho leze mi prijde jako jpg obrazky se spozdenim 20-30s a cetnosti obrazek za cca 5 s. pokud detekuje pohyb tak jde procesor na plno a vse trva strasne dlouho.

  3. Zdravím, rád bych Raspberry Pi použil jako náhradu DVR rekordéru, protože chci pouze jeden prostor monitorovat jedinou kamerou, nepotřebuji pořizovat 4 kanálový rekordér a to za mnohem vyšší cenu než je Raspberry Pi. Otázky z toho vyplývají 3:
    1) je možné k Raspberry Pi připojit jinou kameru než co se uvádí? Mám vlastní s nočním viděním.
    2) pokud je možné připojit jinou kameru, bude fungovat s programem Motion?
    3) je možné záznam videa ukládat na externí úložiště, např. připojený externí disk a ponechávat tam zpětně záznamy, kde byl detekovuán pohyb do doby, než se disk zaplní?

    • Mám to přesně tak, druhé PI mám s kamerou Logitech přes USB, a video ukládám na Windows 2003 server, share mám mountnutý ve fstab, takže je omažitě po restartu k dispozici. Ukládat na externí USB disk nemám vyzkoušené, je to otázka propustnosti USB (kamera a disk), pro disk by byl patrně potřeba powered USB hub a mazání lze automatizovat přes cron (find … -mtime +14 -delete)

  4. Ahoj, taky by mě zajímal nějaký podrobný návod pro h264 RTSP. Respektive, než začnu experimentovat, zajímalo by mě několik maličkostí, pokud můžu poprosit o odpovědi:

    1) Mám 3 kamery (ze všech dostávám obraz přes RTSP/H264 2xFullHD, 1x720p). Lze je dostat do Rapsberry?
    2) Pokud ano, lze se na ně potom občas podívat přes web (ideálně live přes https) – zkrátka všechny kamery na jednom místě v jednom rozhraní?
    3) Prozatím neuvažuji o nahrávání, ale kdyby někdy ano, nahrávat streamy na připojený HDD nebo Flash?
    4) Byl by někdo ochoten nahodit podrobný návod, případně pomoci s rozchozením nebo dát k dispozici obraz hotového OS (klidně i za nějakou „rozumnou“ úplatu)?

    Moc a moc děkuji za jakékoliv informace.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.