v4l2loopback




v4l2loopback

-
модуль ядра для создания виртуальных устройств V4L2


этот модуль позволяет вам создавать «виртуальные видеоустройства». Обычные (v4l2) приложения будут читать эти устройства, как если бы они были обычными видеоустройствами, но видео не будет считываться, например, с карты захвата, а вместо этого будет создано другим приложением. это позволяет вам, например, применить некоторые изящные видеоэффекты к вашему видео в Skype ... это также позволяет некоторые более серьезные вещи (например, я использовал его для добавления возможностей потоковой передачи в приложение посредством подключения GStreamer к устройствам с обратной связью ).

v4l2loopack теперь (с 13 октября 2010 г.) доступен в виде пакета Debian. https://packages.debian.org/source/stable/v4l2loopback
это означает, что он также является частью производных от Debian дистрибутивов, включая Ubuntu (начиная с natty). удобнее всего установить пакет v4l2loopback-dkms:

# aptitude install v4l2loopback-dkms
это должно автоматически собрать и установить модуль для вашего текущего ядра (при условии, что у вас установлены соответствующие заголовки ядра). другой вариант - установить пакет "v4l2loopback-source". в этом случае вы можете просто сделать (как root):

# aptitude install v4l2loopback-source module-assistant
# module-assistant auto-install v4l2loopback-source


загрузите модуль v4l2loopback как root:
# modprobe v4l2loopback
используя sudo use:
$ sudo modprobe v4l2loopback
это создаст дополнительное видеоустройство, например / dev / video0 (количество зависит от того, были ли у вас уже видеоустройства в вашей системе), которое может быть загружено различными программами


ПАРАМЕТРЫ


если вам нужно несколько независимых петлевых устройств, вы можете передать опцию «устройства» при загрузке модуля; например
# modprobe v4l2loopback devices=4
даст вам 4 устройства обратной петли (например /dev/video1... /dev/video5)
вы также можете указать идентификаторы устройств вручную; например
# modprobe v4l2loopback video_nr=3,4,7
создаст 3 устройства ( /dev/video3, /dev/video4& /dev/video7)
# modprobe v4l2loopback video_nr=3,4,7 card_label="device number 3","the number four","the last one"
создаст 3 устройства с именами карт, переданными в качестве второго параметра:
• /dev/video3-> устройство № 3
• /dev/video4-> номер четыре
• /dev/video7-> последний
если у вас возникнут проблемы с обнаружением вашего устройства с помощью Chrome / WebRTC, вы можете попробовать режим «exclusive_caps»:
# modprobe v4l2loopback exclusive_caps=1
включит режим «exclusive_caps», который только сообщает о возможностях CAPTURE / OUTPUT. вновь созданное устройство будет объявлять только о возможностях ВЫХОДА (поэтому обычные приложения веб-камеры (включая Chrome) его не увидят). как только вы подключите производителя к устройству, он начнет объявлять только о возможностях CAPTURE (так что приложения, которые отказываются открывать устройства, которые имеют другие возможности, кроме захвата, могут открывать и его).

АТРИБУТЫ


вы можете установить и / или запросить некоторые атрибуты для каждого устройства через sysfs в удобочитаемом формате. видеть/sys/devices/virtual/video4linux/video*/
также есть некоторые элементы управления V4L2, которые вы можете перечислить с помощью
$ v4l2-ctl -d /dev/video1 -l
• keep_format(0/1): если установлено значение 1, согласованный формат будет фиксироваться навсегда, пока значение не будет установлено обратно на 0
• sustain_framerate(0/1): если установлено значение 1, номинальная частота кадров устройства будет обеспечиваться за счет дублирования кадров при необходимости
• timeout(integer): if> 0, приведет к тому, что изображение тайм-аута (по умолчанию пустой кадр) будет отображаться после (значение) миллисекунд отсутствия ввода
• timeout_image_io(0/1): если установлено в 1, следующий открывающий будет записывать в буфер кадра таймаута

ПРИНУЖДЕНИЕ FPS


$ v4l2loopback-ctl set-fps 25 /dev/video0
или
$ echo '@100' | sudo tee /sys/devices/virtual/video4linux/video0/format

ЗАПУСК GSTREAMER (1.0) CAPS


$ v4l2loopback-ctl set-caps "video/x-raw,format=UYVY,width=640,height=480" /dev/video0

УСТАНОВКА ТАЙМ-АУТА ПОТОКА


$ v4l2-ctl -d /dev/video0 -c timeout=3000
(will output null frames by default)
$
v4l2loopback-ctl set-timeout-image service-unavailable.png /dev/video0
this currently requires GStreamer 1.0 installed













Содержание