toonwolf Skrevet 20. mars 2019 Skrevet 20. mars 2019 (endret) Jeg ønsket å gjenbruke et Logitech C910 webkamera som jeg hadde liggende i en skuff på en Raspberry PI3 B+ som også brukes til andre “oppgaver”. Utfordringen var å finne en løsning som ikke brukte all prosessorkraften til PI’en for å dekode video fra webkamera. C910 komprimerer hvert JPG-bilde (ramme) før det overføres til datamaskinen over USB-koblingen. Ikke alle webkameraer støtter MJPG-formatet. I så fall må Raspberry Pi utføre kompresjon av bildene før de streames over HTTP og dette fører til at CPU går i taket og du vil før eller senere få problemer. Først testet jeg Motion som er lett å sette opp og kan også trigge ved bevegelse, men siden jeg bruker Blue Iris ønsket jeg kun å ha en stream fra webkamera som er koblet til RPI’en. Deretter testet jeg ffmpeg, men det virket for komplisert til mitt bruk. Både Motion of FFmpeg tok dessuten for mye prosessorkraft fra RPI’en til at det var brukbart. Etter mye Googling kom jeg over en “fork” av MJPG-Streamer og hvor installasjon har blitt godt dokumentert av Michel Deslierres. Fordelen med MJPG-Streamer er at den bruker veldig lite CPU! Instruksjonen som jeg har laget er hentet fra dokumentasjon til Michel, er veldig forenklet og tar kun for seg hvordan du installerer MJPG-Streamer på en RPI, lager oppstartscript og setter LED på Logitech C910 til å være av ved å bruke uvcdynctrl. Om du har planer om å gjøre kamera tilgjengelig offentlig må/bør du som et minimum sikre det med brukernavn og passord. For å sette opp dette må du se i guiden til Michel Deslierres Edit: installasjonen er gjort på Raspbian Stretch med desktop (kernel versjon 4.14.98-v7+) Først sjekk om ditt webkamera støtter MJPG ~ $ v4l2-ctl --list-formats Om du får dette resultatet er du “good to go” Type : Video Capture Pixel Format: 'MJPG' (compressed) Name : Motion-JPEG Installer MJPEG-Streamer ~ $ sudo apt-get install cmake libjpeg8-dev ~ $ wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip ~ $ unzip master.zip ~ $ cd mjp*g-* ~ $ cd mjpg-* ~ $ make ~ $ sudo make install ~ $ cd $home Start mjpeg-streamer “manuelt” for å sjekke om det fungerer: ~ $ /usr/local/bin/mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -n -f 10 -r 1280x720" \ > -o "/usr/local/lib/mjpg-streamer/output_http.so -p 8085 -w /usr/local/share/mjpg-streamer/www" MJPG Streamer Version.: 2.0 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 1280 x 720 i: Frames Per Second.: 10 i: Format............: JPEG i: TV-Norm...........: DEFAULT o: www-folder-path......: /usr/local/share/mjpg-streamer/www/ o: HTTP TCP port........: 8085 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled Sjekk om du får opp streamen ved å starte VLC og legge inn http://ipadressetilrpi’en:8085/?action=stream i “Open Network stream” Lag oppstartscript og starte mjpeg-streamer ved reboot ~ $ mkdir -p .local/bin ~ $ nano.local/bin/webcam-streamer Legg inn følgende i fila: #!/bin/bash # adjust these INPUT_PLUGIN="/usr/local/lib/mjpg-streamer/input_uvc.so"; DEVICE="/dev/video0"; FRAMES="15"; RESOLUTION="1280x720"; OUTPUT_PLUGIN="/usr/local/lib/mjpg-streamer/output_http.so"; PORT="8085"; # the following are defaults and should not need to be changed EXEC="/usr/local/bin/mjpg_streamer" WEB_DIR="/usr/local/share/mjpg-streamer/www"; # mjgp_streamer often does not start on first try. Why ? start_streamer(){ for i in {1..5} # try up to 5 times do ${EXEC} -b -i "${INPUT_PLUGIN} -n -d ${DEVICE} -f ${FRAMES} -r ${RESOLUTION}" -o "${OUTPUT_PLUGIN} -p ${PORT} -w ${WEB_DIR} ${CREDENTIALS}" > /dev/null 2>&1 sleep $((1+i)) # waiting progressively longer if pgrep mjpg_streamer > /dev/null then echo "mjpg_streamer started" return fi done echo "could not start mjpg_streamer" } # Carry out specific functions when asked to by the system case "$1" in start) if pgrep mjpg_streamer > /dev/null then echo "mjpg_streamer already running" else start_streamer fi ;; stop) if pgrep mjpg_streamer > /dev/null then killall mjpg_streamer echo "mjpg_streamer stopped" else echo "mjpg_streamer is not running" fi ;; restart) if pgrep mjpg_streamer > /dev/null then killall mjpg_streamer echo "mjpg_streamer stopped" else echo "mjpg_streamer is not running" fi start_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 echo "mjpg_streamer is running with pid ${pid}" echo "mjpg_streamer was started with the following command line" cat /proc/${pid}/cmdline ; echo "" else echo "mjpg_streamer is not running" fi ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0 Skriptet må gjøres kjørbart, og katalogen der den er plassert vil bli lagt til i “system path environment variable” ved å redigere den skjulte filen .profile i hjemmekatalogen ~ $ chmod +x .local/bin/webcam-streamer ~ $ mkdir -p .local/bin ~ $ nano .profile # set PATH so it includes user's private .local/bin if it exists if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi Legg inn webcam-streamer scriptet i oppstart i crontab ~ $ crontab -e Legg inn følgende helt i slutten av fila # Start the webcam on reboot @reboot /home/pi/.local/bin/webcam-streamer start && sleep 5 && /home/pi/.local/bin/webcam-streamer restart EKSTRA: Skru av LED på Logitech C910 webkamera Om du ønsker kan du også skru av det blå LED lyset på webkameraet. Denne instruksjonen er spesifikk for Logitech webkamera C910, men bør/skal også fungere på andre typer. Google for å se om du finne støtte for ditt webkamera. ~ $ sudo apt-get install uvcdynctrl ~ $ nano .local/bin/webcam-settings Kopier og lim inn dette: #!/bin/bash /usr/bin/uvcdynctrl -c --addctrl=046d:0990 /usr/bin/uvcdynctrl --set='LED1 Mode' 0 # Turn off camera LED Sett fila til å være kjørbar ~ $ chmod +x .local/bin/webcam-settings Rediger crontab ~ $ crontab -e Legg inn følgende etter linja med webcam-streamer slik at den starter 30 sekunder etter oppstart. # Apply webcam settings @reboot sleep 30 && /home/pi/.local/bin/webcam-settings Du skal kunne se at det blå LED-lyset blir skrudd av 30 sekunder etter reboot. Endret 20. mars 2019 av toonwolf lagt inn info om hvilket OS som det har blitt installert på 2 1 Siter
Evelen Skrevet 20. mars 2019 Skrevet 20. mars 2019 Super veiledning ?. Det eneste du mangler for å få den perfekt er å skrive hvilket operativsystem du kjører på Pi-en. Siter
toonwolf Skrevet 20. mars 2019 Forfatter Skrevet 20. mars 2019 57 minutter siden, Evelen skrev: hvilket operativsystem du kjører på Pi-en. done 1 Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.