диагностика WEB-камеры
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
Диагностика (работоспособности) WEB-камеры (любой USB-камеры) в Linux - это совсем не так просто...
Это уже возникало в разных темах:
какое устройство - WEB камера? - как выбрать камеру когда их несколько?
USB камера 093a:2471 - это не работающая камера? или это я просто не смог совладать с этим типом камеры?
VirtualBox: USB-устройства - как пробросить WEB-камеру в виртуальную машину + и как её там заставить работать (и проверить)?
Проверка, более-менее, работоспособности WEB-камеры проделывалась вот здесь: Open CV (продолжение) ....
Проверка видеокамеры - это не так просто, усложняется тем, что нужно проверять несколько "слоёв":
- нужно проверять корректность аппаратного подключения, что камера видится...
- нужно выбрать камеру если их несколько...
- нужно проверять и настраивать не только аппаратную видимость камеры, но и корректную работу всей видеоподсистемы V4L
Конечные GUI программы: Cheese, VLC и др. - не годятся. Потому что уже не раз замечено, что в некоторых случаях, чуть сложнее простейших, та же Cheese - путается и не понимает что ей читать. Да и инсталлировать навороченные программы для проверки работоспособности - это не дело, если мне эти программы не нужны ни для чего более.
Хотелось бы иметь консольные процедуры проверки ... и возможно захвата кадра.
Это уже возникало в разных темах:
какое устройство - WEB камера? - как выбрать камеру когда их несколько?
USB камера 093a:2471 - это не работающая камера? или это я просто не смог совладать с этим типом камеры?
VirtualBox: USB-устройства - как пробросить WEB-камеру в виртуальную машину + и как её там заставить работать (и проверить)?
Проверка, более-менее, работоспособности WEB-камеры проделывалась вот здесь: Open CV (продолжение) ....
Проверка видеокамеры - это не так просто, усложняется тем, что нужно проверять несколько "слоёв":
- нужно проверять корректность аппаратного подключения, что камера видится...
- нужно выбрать камеру если их несколько...
- нужно проверять и настраивать не только аппаратную видимость камеры, но и корректную работу всей видеоподсистемы V4L
Конечные GUI программы: Cheese, VLC и др. - не годятся. Потому что уже не раз замечено, что в некоторых случаях, чуть сложнее простейших, та же Cheese - путается и не понимает что ей читать. Да и инсталлировать навороченные программы для проверки работоспособности - это не дело, если мне эти программы не нужны ни для чего более.
Хотелось бы иметь консольные процедуры проверки ... и возможно захвата кадра.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
Код: Выделить всё
[olej@xenix ~]$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="37 (Thirty Seven)"
ID=fedora
VERSION_ID=37
VERSION_CODENAME=""
PLATFORM_ID="platform:f37"
PRETTY_NAME="Fedora Linux 37 (Thirty Seven)"
...
Код: Выделить всё
[olej@xenix ~]$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 1908:2310 GEMBIRD USB2.0 PC CAMERA
Bus 003 Device 004: ID 1005:b113 Apacer Technology, Inc. Handy Steno/AH123 / Handy Steno 2.0/HT203
Bus 003 Device 003: ID 2101:020f ActionStar
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Отображается так:
Код: Выделить всё
[olej@xenix ~]$ ls -l /dev/video*
crw-rw----+ 1 root video 81, 0 янв 25 13:06 /dev/video0
crw-rw----+ 1 root video 81, 1 янв 25 13:06 /dev/video1
Устройство из которого V4L будет читать видеокадры (кстати, для WEB камер это сжатые JPG кадры) - это то, которое отображается как index0:
Код: Выделить всё
[olej@xenix ~]$ ls -l /dev/v4l/by-id
итого 0
lrwxrwxrwx 1 root root 12 янв 25 13:06 usb-Generic_USB2.0_PC_CAMERA-video-index0 -> ../../video0
lrwxrwxrwx 1 root root 12 янв 25 13:06 usb-Generic_USB2.0_PC_CAMERA-video-index1 -> ../../video1
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
Один из способов комплексной диагностики видеоподсистемы - это использование проекта компьютерного зрения OpenCV (Open Conputer Vision) - установка и использование пакета описано здесь: Open CV (продолжение) ....
Делаем в терминале так:
Код: Выделить всё
[olej@xenix ~]$ python
Python 3.11.1 (main, Jan 6 2023, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.6.0'
>>> vc = cv2.VideoCapture(0)
[ INFO:0@327.239] global /builddir/build/BUILD/opencv-4.6.0/modules/videoio/src/videoio_registry.cpp (223) VideoBackendRegistry VIDEOIO: Enabled backends(8, sorted by priority): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); V4L2(970); CV_IMAGES(960); CV_MJPEG(950); FIREWIRE(940); UEYE(930)
[ INFO:0@327.262] global /builddir/build/BUILD/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1104) open OpenCV | GStreamer: v4l2src device=/dev/video0 ! videoconvert ! appsink drop=true
[ INFO:0@327.378] global /builddir/build/BUILD/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1137) open OpenCV | GStreamer: mode - MANUAL
[ WARN:0@328.116] global /builddir/build/BUILD/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1
>>> retval, frame = vc.read()
>>> print(retval)
True
>>> cv2.imshow("", frame)
[ INFO:0@416.858] global /builddir/build/BUILD/opencv-4.6.0/modules/highgui/src/registry.impl.hpp (114) UIBackendRegistry UI: Enabled backends(3, sorted by priority): GTK(1000); GTK3(990); GTK2(980) + BUILTIN(QT5)
[ INFO:0@417.687] global /builddir/build/BUILD/opencv-4.6.0/modules/core/src/parallel/registry_parallel.impl.hpp (96) ParallelBackendRegistry core(parallel): Enabled backends(2, sorted by priority): TBB(1000); OPENMP(990)
[ INFO:0@417.687] global /builddir/build/BUILD/opencv-4.6.0/modules/core/include/opencv2/core/parallel/backend/parallel_for.tbb.hpp (54) ParallelForBackend Initializing TBB parallel backend: TBB_INTERFACE_VERSION=11103
[ INFO:0@417.687] global /builddir/build/BUILD/opencv-4.6.0/modules/core/src/parallel/parallel.cpp (77) createParallelForAPI core(parallel): using backend: TBB (priority=1000)
>>> cv2.waitKey(0)
...
Но! OpenCV - проект крупный.
Меня он вполне устраивает ... потому что уже не один год (лет 10?) входит в круг моих интересов, используется в разных целевых разработок (время от времени), состояние дел там находится под постоянным моим наблюдением...
А как быть тем кто не использует такой инструментарий?
Устанавливать (хоть это и просто) только для того чтобы "забороть" упрямую камеру?
Есть ли более простые способы проверки всего тракта?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
1. Как мне помнится, в мультимедиа популярны такие пакеты для захвата (имиджей или видеопотока).... которые, возможно, нужно доустановить - поскольку это сейчас я делаю в Fedora, то это находится так:
Код: Выделить всё
[olej@xenix ~]$ which mplayer
...
Имеющиеся пакеты
ffmpeg.x86_64 5.1.2-9.fc37 rpmfusion-free-updates
mencoder.x86_64 1.5.1-0.2.20220726svn.fc37 rpmfusion-free
mplayer.x86_64 1.5.1-0.2.20220726svn.fc37 rpmfusion-free
2. В самой Linux V4L подсистеме есть такая утилита streamer ... которая в DEB репозиториях находится в пакете:
Код: Выделить всё
olej@R420:~$ apt contains streamer
...
streamer: /usr/bin/streamer
streamer: /usr/share/doc/streamer
streamer: /usr/share/doc/streamer/changelog.Debian.gz
streamer: /usr/share/doc/streamer/contrib
streamer: /usr/share/doc/streamer/contrib/streamer-wrapper.pl
streamer: /usr/share/doc/streamer/copyright
streamer: /usr/share/man/es/man1/streamer.1.gz
streamer: /usr/share/man/man1/streamer.1.gz
Код: Выделить всё
olej@R420:~$ apt show streamer
Package: streamer
Version: 3.107-1.1
Priority: extra
Section: universe/graphics
Source: xawtv
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 160 kB
Depends: xawtv-plugins (= 3.107-1.1), libc6 (>= 2.34), libjpeg8 (>= 8c)
Suggests: xawtv
Homepage: https://www.linuxtv.org/wiki/index.php/Xawtv
Download-Size: 57,9 kB
APT-Manual-Installed: yes
APT-Sources: http://mirror.mirohost.net/ubuntu jammy/universe amd64 Packages
Description: инструмент захвата кадров (и видео) с телевизионного источника
XawTV is a set of software for watching and recording television channels
and webcams.
.
Пакет предоставляет инструмент для выполнения захвата
одиночных/множественных кадров, или записи видео с устройства video4linux.
Код: Выделить всё
olej@R420:~$ sudo apt install streamer
[sudo] пароль для olej:
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Уже установлен пакет streamer самой новой версии (3.107-1.1).
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 5 пакетов не обновлено.
Код: Выделить всё
[olej@xenix ~]$ dnf provides streamer
Последняя проверка окончания срока действия метаданных: 0:03:05 назад, Ср 25 янв 2023 17:01:59.
xawtv-3.107-7.fc37.x86_64 : TV applications for video4linux compliant devices
Репозиторий : @System
Совпадения с:
Имя файла : /usr/bin/streamer
xawtv-3.107-7.fc37.x86_64 : TV applications for video4linux compliant devices
Репозиторий : fedora
Совпадения с:
Имя файла : /usr/bin/streamer
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
Код: Выделить всё
olej@R420:~$ streamer -help
streamer grabs image(s), records movies and sound
usage: streamer [ options ]
general options:
-h print this help text
-q quiet operation
-d enable debug output
-p n use n compression threads [1]
-w seconds wait before grabbing [0]
video options:
-o file video/movie file name
-f format specify video format
-c device specify video4linux device [/dev/video0]
-D driver specify video4linux driver [libv4l]
-r fps frame rate [10.000]
-s size specify size [320x240]
-t times number of frames or hh:mm:ss [1]
-b buffers specify # of buffers [16]
-j quality quality for mjpeg or jpeg [75]
-n tvnorm set pal/ntsc/secam
-i input set video source
-a don't unmute/mute v4l device.
audio options:
-O file wav file name
-F format specify audio format
-C device specify dsp device [/dev/dsp]
-R rate sample rate [44100]
movie writers:
files - multiple image files
video formats:
ppm 24 bit TrueColor (BE: rgb) [ppm]
pgm 8 bit StaticGray [pgm]
jpeg JPEG (JFIF) [jpeg]
audio formats:
mono8 8bit mono [wav]
mono16 16bit mono (LE) [wav]
stereo 16bit stereo (LE) [wav]
raw - single file, raw video data
video formats:
rgb 24 bit TrueColor (BE: rgb) [raw]
gray 8 bit StaticGray [raw]
422 16 bit YUV 4:2:2 (packed, YUYV) [raw]
422p 16 bit YUV 4:2:2 (planar) [raw]
4mpeg yuv4mpeg (mpeg2enc >= 1.6) [yuv]
4mpeg-o yuv4mpeg (old mpeg2enc) [yuv]
audio formats:
mono8 8bit mono [wav]
mono16 16bit mono (LE) [wav]
stereo 16bit stereo (LE) [wav]
avi - Microsoft AVI (RIFF) format
video formats:
rgb15 15 bit TrueColor (LE) [avi]
rgb24 24 bit TrueColor (LE: bgr) [avi]
mjpeg MJPEG (AVI) [avi]
jpeg JPEG (JFIF) [avi]
audio formats:
mono8 8bit mono [avi]
mono16 16bit mono (LE) [avi]
stereo 16bit stereo (LE) [avi]
If you want to capture to multiple image files you should include some
digits into the movie filename (foo0000.jpeg for example), streamer will
use the digit block to enumerate the image files.
For file formats which can hold *both* audio and video (like AVI and
QuickTime) the -O option has no effect.
streamer will use the file extension of the output file name to figure
which format to use. You need the -f/-F options only if the extension
allows more than one format.
...
Examples:
capture a single frame:
streamer -o foobar.ppm
capture ten frames, two per second:
streamer -t 10 -r 2 -o foobar00.jpeg
record 30 seconds stereo sound:
streamer -t 0:30 -O soundtrack.wav -F stereo
record a quicktime movie with sound:
streamer -t 0:30 -o movie.mov -f jpeg -F mono16
build mpeg movies using mjpegtools + compressed avi file:
streamer -t 0:30 -s 352x240 -r 24 -o movie.avi -f mjpeg -F stereo
lav2wav +p movie.avi | mp2enc -o audio.mp2
lav2yuv +p movie.avi | mpeg2enc -o video.m1v
mplex audio.mp2 video.m1v -o movie.mpg
build mpeg movies using mjpegtools + raw, uncompressed video:
streamer -t 0:30 -s 352x240 -r 24 -o video.yuv -O audio.wav -F stereo
mp2enc -o audio.mp2 < audio.wav
mpeg2enc -o video.m1v < video.yuv
mplex audio.mp2 video.m1v -o movie.mpg
--
(c) 1998-2001 Gerd Knorr <kraxel@bytesex.org>
Код: Выделить всё
[olej@xenix FUJITSU.ESPRIMO.P420]$ streamer -o foobar.ppm
files / video: 24 bit TrueColor (BE: rgb) / audio: none
Код: Выделить всё
[olej@xenix FUJITSU.ESPRIMO.P420]$ ls -l foobar.ppm
-rw-r--r-- 1 olej olej 230415 янв 25 17:35 foobar.ppm
Код: Выделить всё
[olej@xenix FUJITSU.ESPRIMO.P420]$ file foobar.ppm
foobar.ppm: Netpbm image data, size = 320 x 240, rawbits, pixmap
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
диагностика WEB-камеры
Попутно можем попробовать проверить работу и аудио-канала:
Код: Выделить всё
[olej@xenix FUJITSU.ESPRIMO.P420]$ inxi -A
Audio:
Device-1: Intel 8 Series/C220 Series High Definition Audio
driver: snd_hda_intel
Device-2: NVIDIA GF119 HDMI Audio driver: snd_hda_intel
Device-3: GEMBIRD USB2.0 PC CAMERA type: USB
driver: snd-usb-audio,uvcvideo
Sound API: ALSA v: k6.1.7-200.fc37.x86_64 running: yes
Sound Server-1: PipeWire v: 0.3.64 running: yes
Код: Выделить всё
[olej@xenix FUJITSU.ESPRIMO.P420]$ streamer -t 0:30 -O soundtrack.wav -F mono16
files / video: none / audio: 16bit mono (LE)
oss: open /dev/dsp: No such file or directory
movie writer initialisation failed
Которая по умолчанию в современном Linux не устанавливается.
Но может устанавливаться как плагин к ALSA, как мне помнится...
Обращаем внимание на годы развития streamer:
1998-2001
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей