พื้นหลัง
เอาล่ะ ฉันจึงสามารถตั้งค่าเดสก์ท็อป 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 ด้วย การกำหนดค่าเมนู
.
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม :)