Klasse. Danke Dir. Hier die Anleitung für den Raspberry bzgl. Raspi-Camera Modul und bzgl. USB-Webcam am Raspberry.
a.) Folgende Befehle nach der Reihe durchführen (kann sein dass ich etwas zu viel jetzt drinnen habe, aber ich hatte am Anfang ein wenig herum probiert)
sudo apt-get update
raspi-config
Den 5. Eintrag „Interfacing Options“ und dann P1 „Enable Camera“ auswählen und dann „Enable“
Weiter gehts so
sudo apt-get install libjpeg8-dev imagemagick libv4l-dev subversion subversion-tools git fswebcam cmake
sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer
cd mjpg-streamer-experimental
b.) Folgenden Code ausführen:
make USE_LIBV4L2=true clean all
make install
cp input_raspicam.so /usr/local/lib/input_raspicam.so
cp input_file.so /usr/local/lib/input_file.so
cp output_http.so /usr/local/lib/output_http.so
c.) Neue Datei anlegen:
vi /etc/init.d/mjpg_streamer.sh
Folgenden Inhalt einfügen und entsprechend für Euch anpassen auch mit user:password entsprechend ersetzen (Erklärung weiter unten) und wieder mit Taste Esc und dann Taste Shift gedrückt halten und 2x Taste z hintereinander das ganze abspeichern
#!/bin/sh
# /etc/init.d/mjpg_streamer.sh
# v0.2 phillips321.co.uk
### BEGIN INIT INFO
# Provides: mjpg_streamer.sh
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mjpg_streamer for webcam
# Description: Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO
f_message(){
echo "[+] $1"
}
# Carry out specific functions when asked to by the system
case "$1" in
start)
f_message "Starting mjpg_streamer"
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_raspicam.so -ex auto -x 1280 -y 720 -fps 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8200 -c user:password" 2>&1 &
sleep 2
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -y -n -r 320x240 -f 5" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8300 -c user:password" 2>&1 &
sleep 2
f_message "mjpg_streamer started"
;;
stop)
f_message "Stopping mjpg_streamer..."
killall mjpg_streamer
f_message "mjpg_streamer stopped"
;;
restart)
f_message "Restarting daemon: mjpg_streamer"
killall mjpg_streamer
sleep 2
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_raspicam.so -ex auto -x 1280 -y 720 -fps 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8200 -c user:password" 2>&1 &
sleep 2
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -y -n -r 320x240 -f 5" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8300 -c user:password" 2>&1 &
sleep 2
f_message "Restarted daemon: mjpg_streamer"
;;
status)
pid=`ps -A | grep mjpg_streamer | grep -v "grep" | grep -v mjpg_streamer. | awk '{print $1}' | head -n 1`
if [ -n "$pid" ];
then
f_message "mjpg_streamer is running with pid ${pid}"
f_message "mjpg_streamer was started with the following command line"
cat /proc/${pid}/cmdline ; echo ""
else
f_message "Could not find mjpg_streamer running"
fi
;;
*)
f_message "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0
Erklärung bzgl. Befehle
Folgende Zeile spricht die raspicam an mit einer Auflösung von 1280x960 und 15fps pro Sekunde. Am Raspberry ist dann der Stream usw… am Port 8200 erreichbar und mit dem Benutzer user und dem Passwort password . Die Raspicam ist wirklich performant.
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_raspicam.so -ex night -x 1280 -y 960 -fps 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8200 -c user:password" 2>&1 &
Folgende Zeile spricht eine USB-Webcam an die nur YUYV kann mit einer Auflösung von 320x240 und 5fps pro Sekunde. Am Raspberry ist dann der Stream usw… am Port 8300 erreichbar und mit dem Benutzer user und dem Passwort password . Das ist nicht wirklich performant mit dieser geringen Auflösung und Framrate ca. 70% CPU Auslastung (1 von den 4 Cores; also 400% verfügbar am Raspberry 2). Mit einer Auflösung von 640x480 kann es schon 110% sein von den 400%. Man merkt das dann auch an erhöhter Temperatur des Raspberry Pi 2.
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -y -n -r 320x240 -f 5" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8300 -c user:password" 2>&1 &
Folgende Zeile spricht eine USB-Webcam an die MJPG direkt kann mit einer Auflösung von 640x480 und 15 frames pro Sekunde. Am Raspberry ist dann der Stream usw… am Porta 8400 erreichbar und mit dem Benutzer user und dem Passwort password . Bzgl. Performance kann ich keine Aussage treffen da ich keine geeignete USB Webcam habe.
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -fr 15 -r 640x480″ -o “/usr/local/lib/output_http.so -p 8400 -w /usr/local/www -n -c user:password" 2>&1 &
d.) Ausführbar machen des Scriptes
chmod +x /etc/init.d/mjpg_streamer.sh
und bei Bedarf ein Autostart beim Bootvorgang des Raspberry
update-rc.d mjpg_streamer.sh defaults
reboot
e.) Manueller Restart oder genereller Start:
/etc/init.d/mjpg_streamer.sh restart
Aufruf im Webbrowser:
http://user:password@rapsberryip:8200 bzw. hinten mit :8300 je nach Konfiguration
f.) Noch ein Hinweis um Herauszufinden ob die USB-Webcam mit YUYV Modus fährt. Erster Befehl ob die WebCam überhaupt erkannt wird.
lsusb
fswebcam --verbose
Wenn steht:
src_v4l2_set_pix_format,541: Device offers the following V4L2 pixel formats:
src_v4l2_set_pix_format,554: 0: [0x56595559] ‚YUYV‘ (YUYV)
Dann ist oben der YUYV Eintrag zu wählen
Wenn allerdings auch folgendes angezeigt wird mit MJPG
src_v4l2_set_pix_format,541: Device offers the following V4L2 pixel formats:
src_v4l2_set_pix_format,554: 0: [0×56595559] ‘YUYV’ (YUV 4:2:2 (YUYV))
src_v4l2_set_pix_format,554: 1: [0x47504A4D] ‘MJPG’ (MJPEG)
Using palette MJPEG
Dann ist oben der MJPEG Eintrag zu wählen
g.) IP-Symcon Einstellung im IPSCam Modul:
In der IP-Symcon Console ist dann unter dem Eintrag „IP-Symcon“ → „Program“ → „IPSLibrary“ → „config“ → „modules“ → „IPSCam“ → „IPSCam_Configuration“ Script entsprechend folgendes einzurichten in dem Bereich der Function „IPSCam_GetConfiguration“ wobei unten 10.0.0.88 die IP Adresse des Raspberry ist.
function IPSCam_GetConfiguration() {
return array(
0 => array(IPSCAM_PROPERTY_NAME => 'RaspiCam',
IPSCAM_PROPERTY_TYPE => IPSCAM_TYPE_FIXEDCAM,
IPSCAM_PROPERTY_COMPONENT => 'IPSComponentCam_Mjpgstreamer,10.0.0.88,user,password,8200',
),
1 => array(IPSCAM_PROPERTY_NAME => 'YUYV_Webcam',
IPSCAM_PROPERTY_TYPE => IPSCAM_TYPE_FIXEDCAM,
IPSCAM_PROPERTY_COMPONENT => 'IPSComponentCam_Mjpgstreamer,10.0.0.88,user,password,8300',
),
1 => array(IPSCAM_PROPERTY_NAME => 'MJPG_Webcam',
IPSCAM_PROPERTY_TYPE => IPSCAM_TYPE_FIXEDCAM,
IPSCAM_PROPERTY_COMPONENT => 'IPSComponentCam_Mjpgstreamer,10.0.0.88,user,password,8400',
),
);
}
LG
Thiemo