Tilføj Webcam til OctoPrint i DietPi
Sådan bruger du mjpg_streamer, så du kan bruge dit (Logitech C310) webcam i OctoPrint
Indledning
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.
Hent og compile
Først skal du hente mjpg-streamer, og compile dette med make:
Test
Inden vi tilføjer vores nye program til systemet, vil jeg anbefale dig at teste om dit webcam virker efter hensigten.
På Webcams known to work-Wikisiden, kan du finde de anbefalede camera_usb_options
til dit webcam.
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
Permissions til /dev/video0
Har du permissions-problemer ala. dem som ses nedenfor, skal vi lige have rettet et par ting:
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:
Tilføj din bruger til video
-gruppen.
video
-gruppen.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.
Har du fortsat problemer? Prøv at lave en udev-regel
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.
Installer (Flyt programmet) med make
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 ~
.
Auto-start
På denne side finder du et script, til at state programmet med, helt automatisk.
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.
Last updated