У меня есть Dell XPS 9370, который, как известно, имеет только одну камеру. Но ls /dev/video*
результаты в /dev/video0 /dev/video1 /dev/video2 /dev/video3
, так четыре различных устройства камеры.
Эти четыре пузыря камер до приложений, например, Skype, который перечисляет четыре камеры, но просто первую (/dev/video0
) работы.
Кто-либо знает, куда другие записи прибывают из? Или как скрыть их от более высоких слоев?
Ответ, данный здесь 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, который появился после ядра, вероятно, исправляют ошибку самостоятельно, которая не делает только показывает записи, которые имеют возможность "Видеосъемки".
Каждая камера имеет второе устройство хранения метаданных , добавил для вывода информация о метке времени , или подробный на метаданные кадра
Вы можете использовать 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
Для обнаружения, каково каждое устройство можно выполнить это (и изменить число в video0 к video1, и т.д.):
cat /sys/class/video4linux/video0/name
Поиск с помощью Google Dell XPS 9370 дает информацию, что эта модель имеет также инфракрасную камеру в дополнение к нормальной веб-камере, и инфракрасная камера может использоваться для аутентификации с распознаванием лиц. https://wiki.archlinux.org/index.php/Dell_XPS_13 _ (9370)
Если Вы хотите отключить, например, камеру IR, больше информации о Вашей системе необходимо, например, dmesg.
Разница между / 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