Рейтинг:1

Потоковая передача веб-камеры из Windows 10 в Ubuntu 18.04 через WSL2 и usbip

флаг mx

Задний план
Итак, я смог настроить рабочий стол Windows 10 с помощью WSL2, чтобы запустить Ubuntu 18.04. Я пытаюсь сделать веб-камеру доступной и собрал и собрал воедино следующие уроки, чтобы добраться туда, где я есть.

Почему
«Зачем тебе прикладывать такие кропотливые усилия? Кажется глупым». вы могли бы сказать себе. Ну, я думаю, что это глупо, что WSL2 не имеет сквозного порта USB, вот и все. Но я традиционно разрабатываю для Windows, и с недавним проектом компьютерного зрения, который я предпринимаю, который включает SDK Nvidia Isaac (доступен только в Ubuntu 18.04), я надеялся продолжить использовать Windows для разработки, а затем Ubuntu 18.04 для тестирования. Я стараюсь избегать двойной загрузки, потому что переключение между ОС требует много времени.

Текущее состояние
Что я могу сделать, так это пройти через веб-камеру, используя usbip из окон, используя следующие команды
.\usbip.exe привязать -b 1-189
.\usbipd.exe -d -4

а затем на стороне Linux я подключаю его, запустив
sudo usbip прикрепить --remote=172.30.64.1 --busid=1-220
за исключением того, что я ввел свой собственный удаленный адрес и busid

В результате получается возможность видеть, что камера подключена и видна Linux, но независимо от того, какую программу/библиотеку я использую, ни одна из них не может открыть веб-камеру.

Вот некоторые результаты различных команд, которые люди использовали для отображения информации о камере:

~$ v4l2-ctl --список-устройств 
Веб-камера Logitech C930e (usb-vhci_hcd.0-1):
    /dev/video0
    /dev/видео1

~$ 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"
    тип : КАМЕРА
    аудиосет : 0
    тюнер : 0
    стандарт: 0x0 []
    статус: 0x0 []

захват видео
    VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
    индекс : 0
    тип : VIDEO_CAPTURE
    флаги : 0
    описание: "ЮЙВ 4:2:2"
    формат пикселей: 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
    индекс : 1
    тип : VIDEO_CAPTURE
    флаги : 1
    описание : "Движение-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(BASE+0)
    идентификатор: 9963776
    тип: ЦЕЛОЕ
    Название: "Яркость"
    минимум : 0
    максимум : 255
    шаг 1
    значение_по умолчанию : 128
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+1)
    идентификатор: 9963777
    тип: ЦЕЛОЕ
    Название: "Контраст"
    минимум : 0
    максимум : 255
    шаг 1
    значение_по умолчанию : 128
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+2)
    идентификатор: 9963778
    тип: ЦЕЛОЕ
    Название: "Насыщенность"
    минимум : 0
    максимум : 255
    шаг 1
    значение_по умолчанию : 128
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+12)
    идентификатор: 9963788
    тип : BOOLEAN
    name : "Температура баланса белого, Авто"
    минимум : 0
    максимум : 1
    шаг 1
    значение_по умолчанию: 1
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+19)
    идентификатор: 9963795
    тип: ЦЕЛОЕ
    Название: "Выигрыш"
    минимум : 0
    максимум : 255
    шаг 1
    значение_по умолчанию: 0
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+24)
    идентификатор: 9963800
    тип : МЕНЮ
    Название: "Частота линии электропередач"
    минимум : 0
    максимум : 2
    шаг 1
    значение_по умолчанию : 2
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+26)
    идентификатор: 9963802
    тип: ЦЕЛОЕ
    Название: "Температура баланса белого"
    минимум : 2000
    максимум : 7500
    шаг 1
    значение_по умолчанию : 4000
    флаги: НЕАКТИВНО
    VIDIOC_QUERYCTRL(BASE+27)
    идентификатор: 9963803
    тип: ЦЕЛОЕ
    Название: "Резкость"
    минимум : 0
    максимум : 255
    шаг 1
    значение_по умолчанию : 128
    флаги: неизвестно
    VIDIOC_QUERYCTRL(BASE+28)
    идентификатор: 9963804
    тип: ЦЕЛОЕ
    Название: "Компенсация контрового света"
    минимум : 0
    максимум : 1
    шаг 1
    значение_по умолчанию: 0
    флаги: неизвестно

~$ sudo ffmpeg -y -t 5 -f video4linux2 -i /dev/video0 out.mov
ffmpeg версии 3.4.8-0ubuntu0.2 Copyright (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 --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: ошибка ввода/вывода

~$ ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -frames 1 out.jpg
ffmpeg версии 3.4.8-0ubuntu0.2 Copyright (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 --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: ошибка ввода/вывода

Я не уверен, что у меня нет конкретной библиотеки, драйвера, случайных других вещей, но все, что я пробовал до сих пор, похоже, не решает проблему.

Вопрос
Linux видит веб-камеру, знает, что это веб-камера, но не обрабатывает изображение с камеры. Что бы вы порекомендовали мне сделать, чтобы иметь возможность обрабатывать видеопоток? Я думаю, что это проблема с моими настройками, когда я изначально устанавливал Linux с помощью менюконфигурация. Любая помощь будет оценена по достоинству :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.