Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1

  • Astra Linux Common Edition 2.12



В статье описывается создание виртуальной видеокамеры, совместимой с видеоконференцией ZOOM, и перенаправление видеопотока в эту виртуальную камеру.
При написании статьи использовалась сетевая IP-видеокамера наблюдения (surveillance camera), работающая по протоколу RTSP, однако описанная методика применима к любым видеокамерам. Отличия будут только в параметрах получения и конвертации входного видеопотока.

Исходные данные

IP-видеокамера подключена к сети, имеет IP-адрес 192.168.1.12, и URL ("адрес") видеопотока камеры:

Блок кода
rtsp://192.168.1.12:554/user=admin&password=&channel=0&stream=0?.sdp

URL состоит из следующих частей:

  • rtsp - протокол передачи видеопотока RTSP;
  • 192.168.1.12 - IP-адрес видеокамеры (скорее всего у вас будет оличаться);
  • 554 - IP-порт, через который выдаётся  видеопоток (может отличаться);
  • user=admin&password=&channel=0&stream=0?.sdp - параметры доступа к видеопотоку (эта часть зависит от используемой видеокамеры).

При написании статьи использовалась видеокамера Polyvision, для других видеокамер параметры URL будут другими, см. соответствующую документацию на оборудование. Например:

Информация
  • Для встроенной видеокамеры ноутбука Lenovo ThinkPad E  применим URL вида:
    rtsp://*.*.*.*:554/live1.h264
  • Для видеокамеры Ritmix IPC-100 достаточно указать адрес устройства, для примера:
    rtsp://192.168.1.8

Установка и настройка пакетов

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

  • пакет v4l2loopback-dkms - модуль ядра, обеспечивающий создание виртуальной камеры. На момент написания статьи пакет не входит в стандартные дистрибутивы Astra Linux, и В настоящее время пакет включен в состав дистрибутивов Astra Linux и может быть установлен командой:

    Command
    sudo apt install v4l2loopback-dkms

    Для вариантов Astra Linux, не содержащих пакет v4l2loopback-dkms в дистрибутве, пакет может быть скачан и установлен из репозитория Debian:

    Command
    wget http://ftp.de.debian.org/debian/pool/main/v/v4l2loopback/v4l2loopback-dkms_0.12.5-1_all.deb
    sudo apt install ./v4l2loopback-dkms_0.12.5-1_all.deb

    В статье использована самая свежая доступная версия из репозитория sid. В целях обеспечения стабильности работы можно использовать более старые версии, однако в них может не быть поддержки последних версий ядра ОС;


  • пакет ffmpeg - инструмент перенаправления и конвертации видеопотоков. Пакет ffmpeg входит в дистрибутивы Astra Linux и может быть установлен командой:

    Command
    sudo apt install ffmpeg


После установки пакета v4l2loopback-dkms необходимо загрузить соответствующий модуль ядра. Команда:

Command
sudo modprobe v4l2loopback

Загруженный таким образом модуль ядра не будет автоматически загружаться после перезагрузки, автоматическую загрузку можно включить позже, убедившись, что всё работает нормально.

Проверка готовности к работе

Доступность входного видеопотока

Доступность входного видеопотока (получаемого от видеокамеры) можно проверить, например, с помощью медиаплеера VLC (входит в дистрибутивы Astra Linux и устанавливается по умолчанию). Видеоплеер VLC доступен через графическое меню: "Пуск" - "Мультимедиа" - "Медиаплеер VLC".  Воспроизведение сетевого видеопотока доступно через меню VLC: "Медиа" - "Открыть URL..", где указать URL видеопотока.

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

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

Command
Titlelsmod | grep v4l2l
v4l2loopback           40960  0
videodev              225280  5 gspca_main,videobuf2_v4l2,v4l2loopback,gspca_pac7311,videobuf2_common

Кроме того, в каталоге устройств /dev после загрузки модуля должна появиться новая видеокамера - устройство /dev/video? (/dev/video0 если ранее не были подключены никакие другие видеокамеры или устройство с очередным номером, если ранее были подключены другие видеокамеры). Далее предполагается, что других видеокамер нет и используется устройство /dev/video0.

В конференции ZOOM виртуальная видокамера будет определяться как "Dummy video device (0x0000)".

Перенаправление видеопотока

Перенаправление видеопотока выполняется командой:

Command
ffmpeg -i "rtsp://192.168.1.12:554/user=admin&password=&channel=0&stream=0?.sdp" -r 10 -vf format=yuv420p -f v4l2 /dev/video0

Где:

  • -i "rtsp://192.168.1.12:554/user=admin&password=&channel=0&stream=0?.sdp" - URL входного потока

    Информация
    Приведённый здесь URL отностится к камере, использованной при написании статьи.
    В работе следует использовать ваш URL, работоспособность которого проверена в VLC на этапе "Доступность входного видеопотока".


  • -r 10 - количество кадров в секунду;
  • -vf format=yuv420p -f v4l2 - параметры фильтрации и конвертации видеопотока;
  • /dev/video0 - устройство, на которое выводится видеопоток.

Подробное описание параметров ffmpeg смотрите в документации (man ffmpeg).

Проверка перенаправленного видеопотока

Проверить перенаправленный видеопоток можно также с помощью медиаплеера VLC, только использовать в качестве источника не пункт "Открыть URL..", а пункт "Открыть устройство захвата...", и открывать созданную виртуальную видеокамеру (например, /dev/video0).

Если всё сделано правильно, то в видеоконференции ZOOM перенаправленный поток будет доступен через устройство "Dummy video device (0x0000)".

Включение автоматической загрузки модуля ядра

Для того, чтобы модуль ядра автоматически загружался при перезагрузке ОС, его название (в данном случае - v4l2loopback) должно быть добавлено в файл /etc/modules или в файл с произвольным именем и "расширением" .conf, расположенный в каталоге /etc/modeules-load.d/.