[ @video @webcam ]
ПО для управления вебкамерами.
Установка
Посмотреть работающие устройства
ls -ltrh /dev/video*
или удобнее для чтения:
v4l2-ctl --list-devices
Пример ответа:
HD Webcam C615 (usb-0000:00:14.0-2.4.3):
/dev/video3
/dev/media1
HD WebCam: HD WebCam (usb-0000:00:14.0-9):
/dev/video1
/dev/media0
Ок, есть внешняя камера и встроенная.
Можно установить гномовскую cheese
Можно установить kamoso
Можно установить OBS studio
Получить изображение
Можно из консоли:
ffplay /dev/video0
или через mpv
mpv /dev/video0
Откроется окно с видео с камеры. Никаких настроек и прочей ерунды (все настройки задаются в виде параметров в строке запуска).
Сделать фото
ffmpeg -f v4l2 -video_size 1280x720 -i /dev/video0 -frames 1 out.jpg
Записать видео
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -input_format mjpeg -i /dev/video0 -c copy out.mkv
ffprobe out.mkv
Настройки
Чем больше разрешение веб-камеры, тем ниже fps (frame per seconds).
1920x1080 5.000fps
640x480 30.000fps
Определить доступный pixelformat для вебкамеры
v4l2-ctl --list-formats
Доступные настройки
v4l2-ctl -d /dev/video2 --list-ctrls
Пример ответа:
User Controls brightness 0x00980900 (int) : min=0 max=255 step=1 default=128 value=128 contrast 0x00980901 (int) : min=0 max=255 step=1 default=32 value=32 saturation 0x00980902 (int) : min=0 max=255 step=1 default=32 value=32 white_balance_automatic 0x0098090c (bool) : default=1 value=1 gain 0x00980913 (int) : min=0 max=255 step=1 default=64 value=124 power_line_frequency 0x00980918 (menu) : min=0 max=2 default=2 value=2 (60 Hz) white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=1 default=4000 value=5400 flags=inactive sharpness 0x0098091b (int) : min=0 max=255 step=1 default=22 value=22 backlight_compensation 0x0098091c (int) : min=0 max=1 step=1 default=1 value=1 Camera Controls auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=3 (Aperture Priority Mode) exposure_time_absolute 0x009a0902 (int) : min=3 max=2047 step=1 default=166 value=1328 flags=inactive exposure_dynamic_framerate 0x009a0903 (bool) : default=0 value=1 pan_absolute 0x009a0908 (int) : min=-36000 max=36000 step=3600 default=0 value=0 tilt_absolute 0x009a0909 (int) : min=-36000 max=36000 step=3600 default=0 value=0 focus_absolute 0x009a090a (int) : min=0 max=255 step=17 default=51 value=68 flags=inactive focus_automatic_continuous 0x009a090c (bool) : default=1 value=1 zoom_absolute 0x009a090d (int) : min=1 max=5 step=1 default=1 value=1
v4l2-ctl --set-fmt-video=width=720,height=480 && ffplay /dev/video2
Linux virtual camera
You can easily create a virtual camera with some component, you just need to load module named v4l2loopback.
sudo apt-get update
sudo apt-get -y install v4l2loopback-dkms
Once installed, you can load your virtual camera like that.
sudo modprobe v4l2loopback devices=1 video_nr=1 card_label='MyWebCam'
After you can check list video camera like this
ls /dev/video*
Ожидаемый ответ:
/dev/video1
As you defined video_nr=1, you should see /dev/video1 appearing.
In the case of Web RTC, If you need your virtual camera must be visible by your browser, you need to add an option in command line exclusive_caps=1. If this option is not activated only your applications like Teams, WebEx… could detect the virtual camera.
sudo modprobe v4l2loopback devices=1 video_nr=1 card_label='MyWebCam' exclusive_caps=1
Also you can create a mutliple virtual camera with v4l2loopback like this.
sudo modprobe v4l2loopback devices=2 video_nr=1,2 card_label="'MyWebCam1','MyWebCam2'" exclusive_caps=1,1 Windows virtual camera