Установка Web - камеры
DjinNЗаходим на малину.
Переходим в каталог пользователя:
- cd ~
Ставим необходимые пакеты:
- sudo apt install subversion libjpeg62-turbo-dev imagemagick ffmpeg libv4l-dev cmake
Копируем на малину стример:
- git clone https://github.com/jacksonliam/mjpg-streamer.git
Переходим в каталог:
- cd mjpg-streamer/mjpg-streamer-experimental
Вводим команду:
- export LD_LIBRARY_PATH=.
Компилируем:
- make
Пробуем запустить:
- ./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so"
Заходим по адресу:
- http://ip-raspberry:8080/?action=stream
Если видеопоток есть, то радуемся, если нет, то смотрим ошибки и гуглим.
Я использую камеру Logitech C270 при запуске стример выдает ошибки, но все работает.
Теперь добавляем все это дело в Octoprint.
Заходим в Octoprint, там в Настройки -> Webcam & Timelapse
Stream URL: http://ip-raspberry:8080/?action=stream
Snapshot URL: http://ip-raspberry:8080/?action=snapshot
Path to FFMPEG: /usr/bin/ffmpeg
(Либо /usr/bin/avconv, проверяем кнопкой Test)
Если хотите иметь возможность запускать и останавливать видео из Octoprint то, создаем скрипты:
- mkdir /home/pi/scripts
- nano /home/pi/scripts/webcam
#!/bin/bash
# Start / stop streamer daemon
case "$1" in
start)
/home/pi/scripts/webcamDaemon >/dev/null 2>&1 &
echo "$0: started"
;;
stop)
pkill -x webcamDaemon
pkill -x mjpg_streamer
echo "$0: stopped"
;;
*)
echo "Usage: $0 {start|stop}" >&2
;;
esac
- nano /home/pi/scripts/webcamDaemon
#!/bin/bash
MJPGSTREAMER_HOME=/home/pi/mjpg-streamer/mjpg-streamer-experimental
MJPGSTREAMER_INPUT_USB="input_uvc.so"
MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so"
# init configuration
camera="auto"
camera_usb_options="-r 640x480 -f 10"
camera_raspi_options="-fps 10"
if [ -e "/boot/octopi.txt" ]; then
source "/boot/octopi.txt"
fi
# runs MJPG Streamer, using the provided input plugin + configuration
function runMjpgStreamer {
input=$1
pushd $MJPGSTREAMER_HOME
echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
popd
}
# starts up the RasPiCam
function startRaspi {
logger "Starting Raspberry Pi camera"
runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options"
}
# starts up the USB webcam
function startUsb {
logger "Starting USB webcam"
runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options"
}
# we need this to prevent the later calls to vcgencmd from blocking
# I have no idea why, but that's how it is...
vcgencmd version
# echo configuration
echo camera: $camera
echo usb options: $camera_usb_options
echo raspi options: $camera_raspi_options
# keep mjpg streamer running if some camera is attached
while true; do
if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then
startUsb
elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then
startRaspi
fi
sleep 120
done
- chmod +x /home/pi/scripts/webcam
- chmod +x /home/pi/scripts/webcamDaemon
Делаем автозапуск камеры:
- nano /etc/rc.local
И перед exit 0 добавляем:
/home/pi/scripts/webcam start
Теперь добавляем кнопки в интерфейс Octoprint:
- nano /home/pi/.octoprint/config.yaml
В конце файла добавляем:
system:
actions:
- action: streamon
command: /home/pi/scripts/webcam start
confirm: false
name: Start video stream
- action: streamoff
command: sudo /home/pi/scripts/webcam stop
confirm: false
name: Stop video stream