Before you start to make sure your webcam supports MJPEG:
Install v4l-utils (apt-get install v4l-utils) and check the supported formats:
v4l2-ctl -d /dev/video0 --list-formats
There's
usually at least one YUV format and hopefully MJPEG as well. The Microsoft Lifecam HD-3000 is - to my
knowledge - the cheapest webcam
supporting MJPEG at the moment (Q1/2017). The use of YUV will result in a high utilization of CPU and USB bandwidth at higher resolutions,
therefore I would recommend to
use these a webcam supporting MJPEG with OctoPrint (unless you're fine with 320x200 pixels using YUV).Setup - short version
lsusb apt-get update apt-get upgrade apt-get install libjpeg62-turbo-dev imagemagick libv4l-dev ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h apt-get install subversion cd ~ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make mjpg_streamer input_file.so input_uvc.so output_http.so cp mjpg_streamer /usr/local/bin cp output_http.so input_file.so input_uvc.so /usr/local/lib/ touch /etc/init.d/mjpg_streamer.sh
echo '#!/bin/sh
# /etc/init.d/mjpg_streamer.sh
# v0.2 phillips321.co.uk
# v0.3 Jenny Cash
### 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_uvc.so -r 1280x720 -f 30" -o "/usr/local/lib/output_http.so"
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
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -r 1280x720 -f 30" -o "/usr/local/lib/output_http.so"
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' > /etc/init.d/mjpg_streamer.sh
chmod 755 /etc/init.d/mjpg_streamer.sh
update-rc.d mjpg_streamer.sh defaults
#to remove it from default startup:
#update-rc.d -f mjpg_streamer.sh remove
Source (setup - long version):
http://www.phillips321.co.uk/2012/11/05/raspberrypi-webcam-mjpg-stream-cctv/
Manual start of MJPG_Streamer
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -r 1280x720 -f 30" -o "/usr/local/lib/output_http.so"
or
service mjpg_streamer start
service mjpg_streamer stop
service mjpg_streamer restart
Last steps
Reboot and verify that it is started automatically at startup.
Install ffmpeg
apt-get install libav-tools
apt-get install ffmpeg
and configure OctoPrint (Stream URL, snapshot URL, path to FFMPEG):
http://<ip>:8080/?action=stream
http://<ip>:8080/?action=snapshot
/usr/bin/ffmpeg
Stream URL (If your OctoPrint is at 192.168.0.5):
http://192.168.0.5:8080/?action=stream
No comments:
Post a Comment