Am Raspberry PI eine USB Webcam betreiben

Dafuer gibt es unzaehlige Anleitungen im Internet. Die meissten davon funktionieren
aber nicht, oder nicht ordentlich.

Grundsaetzlich gibt es 2 vielversprechende Programme dafuer :

motion -> braucht aber recht viel CPU (kann theoretisch auch mehr; z.B. aufzeichnen, sobald sich was bewegt…)
mjpegstreamer -> besser aber nur mit Tricks optimal :

Wenn man den einfach so kompiliert, dann funktioniert die „mjpeg“ Option nicht.
Die Webcam geht nur mit dem „-y“ Parameter; sie liefert dann „raw“ – Bilder
an die CPU und die CPU muss daraus den Mpeg Stream erzeugen.
Beim PI2 mit seinen 4 Kernen ist das zwar nicht schlimm, aber schoen ist es auch nicht.
(1 Kern zu 100% ausgelastet)
Beim PI1 ist das natuerlich voelliger Non-Sense. In diesem Fall waere der PI natuerlich fuer andere Einsatzzwecke
kaum mehr zu gebrauchen.

Nach einiger Recherche hab ich dafuer aber einen Patch gefunden unter :
https://www.raspberrypi.org/forums/viewtopic.php?t=97983

Damit klappts dann auch ohne „-y“; die Kamera liefert dann direkt komprimierte Bilder zur CPU.
-> CPU Last = 1% beim PI1; 0,3% beim PI2

Allerdings es es halt doch einiges an Aufwand, alles korrekt zusammenzusuchen, zu patchen etc.

Drum hab ich mein gepatchtes Build-Verzeichnis mal gepackt, und hier nochmal hochgeladen.
Dann gehts einfacher :

apt-get update
apt-get install libjpeg8-dev imagemagick libv4l-dev
ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
mkdir -p /install
cd /install
wget http://downloads.walterschlag.net/mjpg-streamer.tgz
tar xfz mjpg-streamer.tgz
cd mjpg-streamer
make clean # Fuer den Fall, dass schon mal kompiliert wurde …
make

In der Datei „start.sh“ finden sich nun einige Beispiele, wie der Streamer zu starten ist.
Mein Start Script sieht so aus :

#!/bin/sh
cd /install/mjpg-streamer
export LD_LIBRARY_PATH=“/install/mjpg-streamer“
./mjpg_streamer -i „input_uvc.so -d /dev/video0 -r 1280×960 -f 5“ –output „output_http.so -c BENUTZERNAME:PASSWORT -w www/“ &

Und wird – ganz einfach – ueber die /etc/rc.local mitgestartet …