Score:1

สตรีมมิ่งเว็บแคมจาก Windows 10 ไปยัง Ubuntu 18.04 ผ่าน WSL2 และ usbip

ธง mx

พื้นหลัง
เอาล่ะ ฉันจึงสามารถตั้งค่าเดสก์ท็อป Windows 10 ด้วย WSL2 เพื่อใช้งาน Ubuntu 18.04 ได้ ฉันกำลังพยายามทำให้เว็บแคมสามารถเข้าถึงได้และได้เลือกและรวบรวมบทช่วยสอนต่อไปนี้เพื่อให้ตัวเองไปถึงจุดที่ฉันอยู่

ทำไม
"ทำไมคุณต้องใช้ความอุตสาหะนี้? ดูเหมือนใบ้" คุณอาจกำลังบอกตัวเอง ฉันคิดว่ามันโง่ที่ WSL2 ไม่มี USB pass-through ดังนั้นก็มี แต่ฉันพัฒนาบน Windows ตามธรรมเนียม และด้วยโครงการคอมพิวเตอร์วิทัศน์เมื่อเร็วๆ นี้ ฉันกำลังดำเนินการที่รวมเอา Nvidia Isaac SDK (มีเฉพาะใน Ubuntu 18.04) ฉันหวังว่าจะใช้ Windows ต่อไปเพื่อพัฒนา จากนั้นใช้ Ubuntu 18.04 เพื่อทดสอบ ฉันพยายามหลีกเลี่ยงการบูทคู่เนื่องจากการสลับไปมาระหว่างระบบปฏิบัติการนั้นใช้เวลานาน

สถานะปัจจุบัน
สิ่งที่ฉันทำได้คือส่งผ่านกล้องเว็บโดยใช้ usbip จาก windows โดยใช้คำสั่งต่อไปนี้
.\usbip.exe ผูก -b 1-189
.\usbipd.exe -d -4

จากนั้นที่ฝั่ง linux ฉันเชื่อมต่อด้วยการเรียกใช้
sudo usbip แนบ --remote=172.30.64.1 --busid=1-220
ยกเว้นว่าฉันใส่ที่อยู่ระยะไกลและบัสของตัวเอง

ผลลัพธ์ที่ได้คือความสามารถในการมองเห็นว่ากล้องติดและมองเห็นโดย linux แต่ไม่ว่าฉันจะใช้โปรแกรม/ไลบรารีใด ก็ไม่มีใครสามารถเปิดเว็บแคมได้

ต่อไปนี้คือเอาต์พุตบางส่วนจากคำสั่งต่างๆ ที่ผู้ใช้ใช้ในการแสดงข้อมูลกล้อง:

~$ v4l2-ctl --รายการอุปกรณ์ 
เว็บแคม Logitech C930e (usb-vhci_hcd.0-1):
    /dev/video0
    /dev/video1

~$ v4l-info /dev/video0

### ข้อมูลอุปกรณ์ v4l2 [/dev/video0] ###
ข้อมูลทั่วไป
    VIDIOC_QUERYCAP
    ไดรเวอร์: "uvcvideo"
    การ์ด : "เว็บแคม Logitech C930e"
    bus_info : "usb-vhci_hcd.0-1"
    รุ่น : 4.19.84
    ความสามารถ : 0x84a00001 [VIDEO_CAPTURE,?,?,STREAMING,(null)]

มาตรฐาน

อินพุต
    VIDIOC_ENUMINPUT(0)
    ดัชนี : 0
    ชื่อ : "กล้อง 1"
    ประเภท : CAMERA
    ชุดเสียง : 0
    จูนเนอร์ : 0
    มาตรฐาน : 0x0 []
    สถานะ : 0x0 []

การจับภาพวิดีโอ
    VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
    ดัชนี : 0
    ประเภท : VIDEO_CAPTURE
    ค่าสถานะ : 0
    คำอธิบาย : "YUYV 4:2:2"
    รูปแบบพิกเซล : 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
    ดัชนี : 1
    ประเภท : VIDEO_CAPTURE
    ธง : 1
    คำอธิบาย : "Motion-JPEG"
    รูปแบบพิกเซล : 0x47504a4d [MJPG]
    VIDIOC_G_FMT(VIDEO_CAPTURE)
    ประเภท : VIDEO_CAPTURE
    fmt.pix.width : 640
    fmt.pix.height : 480
    fmt.pix.pixelformat : 0x56595559 [YUYV]
    fmt.pix.field : ไม่มี
    fmt.pix.bytesperline : 1280
    fmt.pix.sizeimage : 614400
    fmt.pix.colorspace : SRGB
    fmt.pix.priv : 4276996862

การควบคุม
    VIDIOC_QUERYCTRL(ฐาน+0)
    id : 9963776
    ชนิด : INTEGER
    ชื่อ : "ความสดใส"
    ขั้นต่ำ : 0
    สูงสุด : 255
    ขั้นตอนที่ 1
    default_value : 128
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+1)
    id : 9963777
    ชนิด : INTEGER
    ชื่อ: "ความคมชัด"
    ขั้นต่ำ : 0
    สูงสุด : 255
    ขั้นตอนที่ 1
    default_value : 128
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+2)
    id : 9963778
    ชนิด : INTEGER
    ชื่อ : "อิ่มตัว"
    ขั้นต่ำ : 0
    สูงสุด : 255
    ขั้นตอนที่ 1
    default_value : 128
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+12)
    id : 9963788
    ชนิด : บูลีน
    ชื่อ : "อุณหภูมิสมดุลแสงขาว, อัตโนมัติ"
    ขั้นต่ำ : 0
    สูงสุด : 1
    ขั้นตอนที่ 1
    default_value : 1
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+19)
    id : 9963795
    ชนิด : INTEGER
    ชื่อ "เกน"
    ขั้นต่ำ : 0
    สูงสุด : 255
    ขั้นตอนที่ 1
    default_value : 0
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+24)
    id : 9963800
    ประเภท : เมนู
    ชื่อ : "ความถี่สายไฟ"
    ขั้นต่ำ : 0
    สูงสุด : 2
    ขั้นตอนที่ 1
    default_value : 2
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+26)
    id : 9963802
    ชนิด : INTEGER
    ชื่อ : "อุณหภูมิสมดุลแสงขาว"
    ขั้นต่ำ : 2000
    สูงสุด : 7500
    ขั้นตอนที่ 1
    default_value : 4000
    แฟล็ก: ไม่ใช้งาน
    VIDIOC_QUERYCTRL(ฐาน+27)
    id : 9963803
    ชนิด : INTEGER
    ชื่อ : "ความคม"
    ขั้นต่ำ : 0
    สูงสุด : 255
    ขั้นตอนที่ 1
    default_value : 128
    ธง : ไม่ทราบ
    VIDIOC_QUERYCTRL(ฐาน+28)
    id : 9963804
    ชนิด : INTEGER
    ชื่อ : "การชดเชยแสงด้านหลัง"
    ขั้นต่ำ : 0
    สูงสุด : 1
    ขั้นตอนที่ 1
    default_value : 0
    ธง : ไม่ทราบ

~$ sudo ffmpeg -y -t 5 -f video4linux2 -i /dev/video0 out.mov
ffmpeg รุ่น 3.4.8-0ubuntu0.2 ลิขสิทธิ์ (c) 2000-2020 นักพัฒนา FFmpeg
  สร้างด้วย gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  การกำหนดค่า: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --ปิดการใช้งานการลอก --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
  รูปแบบ libav 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: อินพุต/เอาต์พุตผิดพลาด

~$ ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -frames 1 out.jpg
ffmpeg รุ่น 3.4.8-0ubuntu0.2 ลิขสิทธิ์ (c) 2000-2020 นักพัฒนา FFmpeg
  สร้างด้วย gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  การกำหนดค่า: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --ปิดการใช้งานการลอก --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
  รูปแบบ libav 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: อินพุต/เอาต์พุตผิดพลาด

ฉันไม่แน่ใจว่าฉันไม่มีไลบรารีเฉพาะ ไดรเวอร์ สิ่งอื่นๆ แบบสุ่มหรือไม่ แต่ทุกอย่างที่ฉันได้ลองจนถึงตอนนี้ดูเหมือนจะไม่สามารถแก้ปัญหาได้

คำถาม
Linux เห็นเว็บแคมรู้ว่าเป็นเว็บแคม แต่ไม่ได้ประมวลผลฟีดกล้อง คุณจะแนะนำให้ฉันทำอย่างไรเพื่อให้สามารถประมวลผลฟีดวิดีโอได้ ฉันคิดว่านี่เป็นปัญหากับการตั้งค่าของฉันเมื่อฉันตั้งค่า linux ด้วย การกำหนดค่าเมนู. ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา