Puncte:1

Streaming webcam de la Windows 10 la Ubuntu 18.04 prin WSL2 și usbip

drapel mx

fundal
Bine, așa că am putut să-mi configurez desktopul Windows 10 cu WSL2 pentru a rula Ubuntu 18.04. Încerc să fac ca camera web să fie accesibilă și am ales și adunat următoarele tutoriale pentru a ajunge acolo unde sunt.

De ce
"De ce ai trece prin acest efort minuțios? Pare prost." s-ar putea să îți spui. Ei bine, cred că este o prostie că WSL2 nu are un USB pass-through, așa că există asta. Dar dezvolt pe Windows în mod tradițional și, cu un proiect recent de computer vision pe care îl întreprind, care încorporează SDK-ul Nvidia Isaac (disponibil doar pe Ubuntu 18.04), speram să continui să folosesc Windows pentru a dezvolta, iar apoi Ubuntu 18.04 pentru a testa. Încerc să stau departe de pornirea duală, deoarece comutarea înainte și înapoi între sistemele de operare necesită mult timp.

Starea curenta
Ceea ce pot face este să trec prin camera web folosind usbip din Windows utilizând următoarele comenzi
.\usbip.exe bind -b 1-189
.\usbipd.exe -d -4

și apoi pe partea linux îl conectez rulând
sudo usbip attach --remote=172.30.64.1 --busid=1-220
cu excepția faptului că am introdus propria mea adresă de la distanță și busid

Rezultă abilitatea de a vedea că camera este atașată și văzută de Linux, dar indiferent de programul/biblioteca pe care îl folosesc, niciunul dintre ei nu poate deschide camera web.

Iată câteva rezultate de la diferite comenzi pe care oamenii le-au folosit pentru a afișa informații despre cameră:

~$ v4l2-ctl --list-devices 
Cameră web Logitech C930e (usb-vhci_hcd.0-1):
    /dev/video0
    /dev/video1

~$ v4l-info /dev/video0

### informații despre dispozitiv v4l2 [/dev/video0] ###
informatii generale
    VIDIOC_QUERYCAP
    driver: "uvcvideo"
    card: "Camera web Logitech C930e"
    bus_info : „usb-vhci_hcd.0-1”
    versiunea: 4.19.84
    capabilități: 0x84a00001 [VIDEO_CAPTURE,?,?,STREAMING,(null)]

standardele

intrări
    VIDIOC_ENUMINPUT(0)
    indice: 0
    nume: "Camera 1"
    tip: CAMERA
    set audio: 0
    tuner: 0
    std: 0x0 []
    stare: 0x0 []

captură video
    VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
    indice: 0
    tip: VIDEO_CAPTURE
    steaguri: 0
    descriere: "YUYV 4:2:2"
    format pixel: 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
    indice: 1
    tip: VIDEO_CAPTURE
    steaguri: 1
    descriere: „Motion-JPEG”
    format pixel: 0x47504a4d [MJPG]
    VIDIOC_G_FMT(VIDEO_CAPTURE)
    tip: VIDEO_CAPTURE
    lățime fmt.pix: 640
    fmt.pix.inaltime: 480
    fmt.pix.pixelformat: 0x56595559 [YUYV]
    fmt.pix.field: NIMIC
    fmt.pix.bytesperline: 1280
    fmt.pix.sizeimage : 614400
    fmt.pix.colorspace : SRGB
    fmt.pix.priv : 4276996862

controale
    VIDIOC_QUERYCTRL(BASE+0)
    ID: 9963776
    tip: INTEGER
    nume: „Luminozitate”
    minim: 0
    maxim: 255
    pasul 1
    valoare_default: 128
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+1)
    ID: 9963777
    tip: INTEGER
    nume: "Contrast"
    minim: 0
    maxim: 255
    pasul 1
    valoare_default: 128
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+2)
    ID: 9963778
    tip: INTEGER
    nume: "Saturație"
    minim: 0
    maxim: 255
    pasul 1
    valoare_default: 128
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+12)
    ID: 9963788
    tip: BOOLEAN
    nume: „Temperatura balans de alb, automat”
    minim: 0
    maxim: 1
    pasul 1
    default_value : 1
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+19)
    ID: 9963795
    tip: INTEGER
    nume: "Castig"
    minim: 0
    maxim: 255
    pasul 1
    valoare_default: 0
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+24)
    ID: 9963800
    tip: MENU
    nume: „Frecvența liniei de alimentare”
    minim: 0
    maxim: 2
    pasul 1
    default_value : 2
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+26)
    ID: 9963802
    tip: INTEGER
    nume: „Temperatura balansului de alb”
    minim: 2000
    maxim: 7500
    pasul 1
    valoare_default: 4000
    steaguri : INACTIV
    VIDIOC_QUERYCTRL(BASE+27)
    ID: 9963803
    tip: INTEGER
    nume: "Sharpness"
    minim: 0
    maxim: 255
    pasul 1
    valoare_default: 128
    steaguri : necunoscute
    VIDIOC_QUERYCTRL(BASE+28)
    ID: 9963804
    tip: INTEGER
    nume: „Compensarea luminii de fundal”
    minim: 0
    maxim: 1
    pasul 1
    valoare_default: 0
    steaguri : necunoscute

~$ sudo ffmpeg -y -t 5 -f video4linux2 -i /dev/video0 out.mov
ffmpeg versiunea 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 dezvoltatorii FFmpeg
  construit cu gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configurație: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libie c61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil 55. 78.100 / 55. 78.100
  libavcodec 57.107.100 / 57.107.100
  libavformat 57. 83.100 / 57. 83.100
  libavdevice 57. 10.100 / 57. 10.100
  libavfilter 6.107.100 / 6.107.100
  libavresample 3. 7. 0 / 3. 7. 0
  libswscale 4. 8.100 / 4. 8.100
  libswresample 2. 9.100 / 2. 9.100
  libpostproc 54. 7.100 / 54. 7.100
/dev/video0: eroare de intrare/ieșire

~$ ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -frames 1 out.jpg
ffmpeg versiunea 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 dezvoltatorii FFmpeg
  construit cu gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configurație: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libie c61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil 55. 78.100 / 55. 78.100
  libavcodec 57.107.100 / 57.107.100
  libavformat 57. 83.100 / 57. 83.100
  libavdevice 57. 10.100 / 57. 10.100
  libavfilter 6.107.100 / 6.107.100
  libavresample 3. 7. 0 / 3. 7. 0
  libswscale 4. 8.100 / 4. 8.100
  libswresample 2. 9.100 / 2. 9.100
  libpostproc 54. 7.100 / 54. 7.100
/dev/video0: eroare de intrare/ieșire

Nu sunt sigur dacă nu am o anumită bibliotecă, driver, altceva aleatoriu, dar tot ce am încercat până acum pare să nu rezolve problema.

Întrebare
Linux vede camera web, știe că este o cameră web, dar nu procesează fluxul camerei. Ce mi-ați recomanda să fac pentru a putea procesa fluxul video? Cred că aceasta este o problemă cu setările mele când am configurat inițial Linux cu menuconfig. Orice ajutor ar fi apreciat :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.