Tilføj Webcam til OctoPrint i DietPi
Sådan bruger du mjpg_streamer, så du kan bruge dit (Logitech C310) webcam i OctoPrint
Jeg har en Ender 3 stående, som er koblet til en PC. Denne PC har pt. fået installeret DietPi, og med DietPi, har jeg installeret OctoPrint. Normalt har jeg førhen brugt en Raspberry Pi 3, men da den fik strømproblemer, skiftede jeg til en Intel NUC, med en smule flere kræfter. Jeg har dernæst koblet et Logitech C310 til NUC'en, så jeg kan følge mine prints.
Men for at OctoPrint kan følge med, skal man bruge fx. mjpg-streamer, som laver et netværksstream, med billeder fra dit webcam.
Du kan finde en liste over testede webcams inkl.
camera_usb_options
på OctoPrint Wiki-siden Webcams known to work. camera_usb_options
kan være nyttige at kigge på, hvis du vil have optimeret kvaliteten, eller blot finde ud af, hvordan du får dit kamera til at virke med mjpg-streamer
. Alt afhængig af hvad du ender ud med, skal du være OBS PÅ, at det kan have indflydelse på kvaliteten af dine 3D-prints, såfremt mjpg-streamer
bruger for mange af dine CPU-kræfter. På nettet anbefaler de fleste, at man har mindst en Raspberry Pi 3 kørende, hvis man vil koble et webcam til.Der findes desuden mange guides på nettet til selv samme, men her får du det på dansk. Vil du blot løbe igennem de enkelte kommandoer, kan du evt. kigge på denne Wiki-side.
Først skal du hente mjpg-streamer, og compile dette med make:
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
Inden vi tilføjer vores nye program til systemet, vil jeg anbefale dig at teste om dit webcam virker efter hensigten.
I mit tilfælde vil jeg forsøge med:
camera_usb_options="-r VGA -f 10"
Og herefter starter jeg programmet, hvor jeg har
$camera_usb_options
-variablen med i kommandoen:./mjpg_streamer -i "input_uvc.so $camera_usb_options" -o "output_http.so -w ./www"
Du kan stoppe programmet ved at bruge genvejen
Ctrl
+ C
(normalt kendt som SIGINT
-signalet), som bruges til at afbryde den nuværende eksekvering.Herefter kan du tilgå dit stream via:
http://{DietPi-IPAdresse}:8080/?action=stream
Har du permissions-problemer ala. dem som ses nedenfor, skal vi lige have rettet et par ting:
> ./mjpg_streamer -i "input_uvc.so $camera_usb_options" -o "output_http.so -w ./www"
MJPG Streamer Version: git rev: ---
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 10
i: Format............: JPEG
i: TV-Norm...........: DEFAULT
ERROR opening V4L interface: Permission denied
Det nemmeste du kan gøre, er at tilføje din bruger til
video
-gruppen på dit system, såfremt /dev/video0
er ejet af root:vdeo
, som det fremgår nedenfor:> ls -alh /dev/video0
crw-rw---- 1 root video 81, 0 Feb 27 12:49 /dev/video0
Tilføj din bruger til
video
-gruppen, såfremt ejerskabet er tildelt root:video
.I dette eksempel kunne man forestille sig, at din bruger er
dietpi
. Kør derfor følgende kommando:sudo usermod -aG video dietpi
Log nu af din bruger, og log på igen.
Nu burde du havde fået tildelt rettighederne til gruppen, og kan derfor køre kommandoen igen - uden brug af
sudo
foran.Hvis det ikke virker, blot at tilføje din bruger til
video
-gruppen, kan det tænkes at /dev/video0
ikke har fået tildelt de ønskede rettigheder. Dette kan du rette op på, med en udev-regel.Skift til din root-bruger med
sudo su
, og kør følgende:echo 'SUBSYSTEM=="video0", GROUP="video", MODE="0660"' > /etc/udev/rules.d/10-webcam.rules
Genstart herefter med
sudo reboot
, og prøv igen, med din normale bruger.Er du nået hertil, formoder jeg, at dit sciprt virker, og at du har fået rettet evt. permissions-problemer.
Mens du fortsat står i mappen:
~/mjpg-streamer/mjpg-streamer-experimental
, skal du blot installere programmet med:sudo make install
Programmet bliver gemt som:
/usr/local/bin/mjpg_streamer
, og kan køres som mjpg_streamer
Indholdet af
www
-mappen bliver gemt under stien /usr/local/share/mjpg-streamer/www
, og sidst men ikke mindst bibliotekerne, som bliver gemt under /usr/local/lib/mjpg-streamer
.Test evt. om det virker med:
mjpg_streamer -i "input_uvc.so" -o "output_http.so -w ./www"
Bemærk at jeg her, har undladt at have camera_usb_options
med.Nu kan du, såfremt du ønsker det, fjerne
mjpg_streamer
-mappen, som du har gemt i ~
.Er du doven, kan du hente et dump fra Pastebin med:
curl -o mjpg-streamer.sh https://pastebin.com/raw/Qx8PDuhp
Herefter åbner du scriptet:
nano ~/mjpg-streamer.sh
Hvis du har et behov for fx. flere frames, ændre kvaliteten, eller andet, gøres det i toppen af scriptet. Du kan også ændre fx. porten.
Virker dit webcam uden
-y
parameteret med mjpg_streamer, skal du desuden huske at ændrer YUV="yes"
til YUV="no"cu
, da du ikke har et behov for at starte programmet med -y
-flagget, som vil kræve ekstra kræfter af din Raspberry Pi.Tillad at scriptet kan eksekveres:
chmod +x /home/dietpi/mjpg-streamer.sh
Jeg oplevede at der var enkelte karakterer (CR-karakterer), som skabte problemer, så jeg fjernede dem med:
sed -i -e 's/\r$//' mjpg-streamer.sh
Åben crontab for din bruger:
crontab -e
Tilføj linjen:
@reboot /home/dietpi/mjpg-streamer.sh start
Inden du genstarter, kan du evt. selv prøve sciptet med:
./mjpg-streamer.sh start
Nu kan du tilgå streamet via:
{DietPi-IPAdresse}:8081/?action=stream
God fornøjelse med opsætningen af dit webcam. Hvis du har anbefalinger eller tips og tricks, vil jeg meget gerne høre om dem. Se "Velkommen"-siden.