Четыре/dev/video записи, но всего одна камера

У меня есть Dell XPS 9370, который, как известно, имеет только одну камеру. Но ls /dev/video* результаты в /dev/video0 /dev/video1 /dev/video2 /dev/video3, так четыре различных устройства камеры.
Эти четыре пузыря камер до приложений, например, Skype, который перечисляет четыре камеры, но просто первую (/dev/video0) работы.

Кто-либо знает, куда другие записи прибывают из? Или как скрыть их от более высоких слоев?

4
задан 6 March 2019 в 23:41

4 ответа

Ответ, данный здесь https://unix.stackexchange.com/questions/512759/multiple-dev-video-for-one-physical-device, является хорошим. У меня есть та же проблема с Skype, и это запустилось, когда я обновил ядро от 4.4.x до 5.1.x так где-нибудь там, uvcvideo модуль произвел другой вывод. Однако имеет, на это указывают вывод

v4l2-ctl --device=/dev/video* --all

действительно показывает, что каждая запись имеет различную возможность, и в случае моей камеры usb Logitech только 1 имеет видеосъемку. Таким образом, это наиболее вероятно ошибка в Skype, который появился после ядра, вероятно, исправляют ошибку самостоятельно, которая не делает только показывает записи, которые имеют возможность "Видеосъемки".

2
ответ дан 1 December 2019 в 09:59

Каждая камера имеет второе устройство хранения метаданных , добавил для вывода информация о метке времени , или подробный на метаданные кадра

Вы можете использовать v4l2-ctl для получения большей информации об устройстве и можете использовать v4l2-ctl --list-formats --device /dev/videoX, чтобы определить, содержит ли это видеопотоки.

Для списка просто устройств с использованием видеоданных:

for dev in `find /dev -iname 'video*' -printf "%f\n"`
do
  v4l2-ctl --list-formats --device /dev/$dev | \
    grep -qE '\[[0-9]\]' && \
    echo $dev `cat /sys/class/video4linux/$dev/name`
done

Это может быть объединено с fzf , чтобы выбрать камеру и запустить программу:

for dev in `find /dev -iname 'video*' -printf "%f\n"`;do; v4l2-ctl --list-formats --device /dev/$dev | grep -qE '\[[0-9]\]' && echo $dev `cat /sys/class/video4linux/$dev/name`;done | fzf | awk '{ printf("/dev/%s", $1) }' | xargs guvcview --device
0
ответ дан 1 December 2019 в 09:59

Для обнаружения, каково каждое устройство можно выполнить это (и изменить число в video0 к video1, и т.д.):

cat /sys/class/video4linux/video0/name

Поиск с помощью Google Dell XPS 9370 дает информацию, что эта модель имеет также инфракрасную камеру в дополнение к нормальной веб-камере, и инфракрасная камера может использоваться для аутентификации с распознаванием лиц. https://wiki.archlinux.org/index.php/Dell_XPS_13 _ (9370)

Если Вы хотите отключить, например, камеру IR, больше информации о Вашей системе необходимо, например, dmesg.

1
ответ дан 1 December 2019 в 09:59

Разница между / dev / video0 и / dev / video1 для одной камеры в том, что одна предназначена для «захвата видео», а другая - для «захвата метаданных».

Это можно проверить в информации «Ограничения устройств» ниже:

Следующая команда показывает информацию для / dev / video0:

$ v4l2-ctl --info --device /dev/video0
Driver Info (not using libv4l2):
Driver name   : uvcvideo
Card type     : 720p HD Camera: 720p HD Camera
Bus info      : usb-0000:00:14.0-6
Driver version: 5.3.18
Capabilities  : 0x84A00001
    Video Capture
    Metadata Capture
    Streaming
    Extended Pix Format
    Device Capabilities
Device Caps   : 0x04200001
    Video Capture
    Streaming
    Extended Pix Format

И для / dev / video1:

$ v4l2-ctl --info --device /dev/video1
Driver Info (not using libv4l2):
Driver name   : uvcvideo
Card type     : 720p HD Camera: 720p HD Camera
Bus info      : usb-0000:00:14.0-6
Driver version: 5.3.18
Capabilities  : 0x84A00001
    Video Capture
    Metadata Capture
    Streaming
    Extended Pix Format
    Device Capabilities
Device Caps   : 0x04A00000
    Metadata Capture
    Streaming
    Extended Pix Format
3
ответ дан 22 April 2020 в 01:53

Другие вопросы по тегам:

Похожие вопросы: