Установка Web - камеры

Установка 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

Report Page