Beim heutigen Selflab sind wir auch die Idee gekommen, die 3D-Drucker auch von zuhause per Webcam überwachen zu können, also haben wir kurzerhand eine Webcam an das schon vorhandene Rapsberry Pi angeschlossen und mittels mjpg-stream einen Stream bereitgestellt. Das Ergebnis sieht man hier: http://fablabtuer.ddns.net:8080. Hier jetzt eine kurze Zusammenfassung wie das funktioniert:
Zunächst muss per ssh oder angeschlossener Tastatur ein Terminal geöffnet werden. Dort überprüft man mithilfe des Befehls
lsusb
ob die angeschlossene Webcam erkannt wird. Einfach vor dem anschließen und nach dem anschließen ausführen, und prüfen ob eine neue Zeile hinzukommt. Bei unserem Beispiel ist das die Zeile
Bus 001 Device 004: ID 041e:4095 Creative Technology, Ltd
.
Anschließend installieren wir die Software, die dafür nötig ist. Hierzu zunächst mithilfe von
sudo apt-get update
die Quellen aktualisieren. Anschließend installieren wir von mjpg-stream benötigte Pakete:
sudo apt-get install subversion-tools libjpeg8-dev imagemagick
Subversion um mjpg-stream herunterzuladen und die anderen beiden als benötigte Pakete.
Mit dem Befehl
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
laden wir das mjpg-streamer Projekt in das aktuell gewählte Verzeichnis (also am Besten vorher in das gewünschte Verzeichnis wechseln).
Anschließend wechseln wir in das neu erzeugte Verzeichnis:
cd mjpg-streamer
und kompilieren den Quellcode mithilfe von
make
Sind die Quellen kompiliert, können wir das Programm mithilfe von
sudo make install
installieren. sudo
ist nötig, damit die erzeugten Dateien in die verzeichnisgeschützten Ordner kopiert werden können.
Nun starten wir das installierte Programm das erste Mal und testen, ob alles funktioniert:
sudo mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080"
Dieser kompliziert aussehende Befehl macht nicht anderes, als mjpg_streamer zu starten mit /dev/video0
als Eingabegerät, der Auflösung 640x480(hier sollte man einen Wert kleiner oder gleich der maximalen Auflösung der Webcam wählen) und der Framerate 15. Gleichzeitig wird ein Webserver als Ausgabe gewählt, der auf Port 8080 gestartet wird. Um das nun zu testen, rufen wir im Browser http://localhost:8080 auf, falls wir auf dem Raspberry pi selbst arbeiten, falls wir per SSH arbeiten, ersetzen wir localhost natürlich durch die IP-Adresse des Raspberrys. Hier sollte nun eine kleine Weboberfläche zu sehen sein mit einem Begrüßungstext. Klickt man in der Menüleiste links auf Stream kann man direkt die Aufnahme der Webcam sehen, wenn alles geklappt hat.
Wenn das erledigt ist, müssen wir nurnoch dafür sorgen, dass das Programm beim Booten automatisch ausgeführt wird, dafür kann man Init-Skripts verwenden. Mit dem Befehl
sudo nano /etc/init.d/mjpg_streamer
(oder auch jedem anderen Texteditor) legen wir eine neue Datei an, diese sollte folgende Zeilen enthalten:
#!/bin/sh
# /etc/init.d/mjpg_streamer
#
# Creation: 04.02.2013
# Last Update: 04.02.2013
#
# Written by Georg Kainzbauer (http://www.gtkdb.de)
#
### BEGIN INIT INFO
# Provides: mjpg_streamer
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MJPG-Streamer
# Description: MJPG-Streamer takes JPGs from Linux-UVC compatible webcams and streams them as M-JPEG via HTTP.
### END INIT INFO
start()
{
echo "Starting mjpg-streamer..."
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080" >/dev/null 2>&1 &
}
stop()
{
echo "Stopping mjpg-streamer..."
kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo “Usage: $0 {start|stop|restart}”
;;
esac
exit 0
Dieses Skript müssen wir nun ausführbar machen mit:
sudo chmod 755 /etc/init.d/mjpg_streamer
und in den Systemstart integrieren:
sudo update-rc.d mjpg_streamer defaults
Wenn das funktioniert sollte nach einem Neustart
sudo reboot
die Webcam über die selbe URL verfügbar sein.
Damit das ganze auch über das Internet verfügbar ist, muss ein DYN-DNS Dienst verwendet werden, um der wechselnden IP-Adresse des Routers eine statische Domain zuzuweisen, außerdem muss eine Portfreigabe des Ports 8080 des Routers (oder eines anderen frei gewählten Ports) auf den Port 8080 des Raspberry pi eingerichtet werden. Hierfür unbedingt darauf achten, dass dem Raspberry Pi innerhalb des Netzwerks eine gleichbleibende IP zugewiesen wird!
Die Original-Anleitung findet ihr hier: http://www.gtkdb.de/index_36_2098.html