@tester_ch

Имитация веб-камеры — как автоматизировать на python (linux)?

Приветствую. Суть задачи - нужно прокидывать видео в виртуальную веб-камеру в питоновском проекте.
До рабочего ручного механизма запуска я дошел самостоятельно:

1) Установим пакет
sudo apt install v4l2loopback
и добавляем виртуальную камеру
sudo modprobe v4l2loopback exclusive_caps=1 max_width=4096 max_height=4096 video_nr=74 max_buffers=2 card_label="Virtual Camera"


2) активируем камеру из файла видео
ffmpeg -re -i "video.mkv" -map 0:v -f v4l2 /dev/video74

второй вкладкой - проверить трансляцию
ffplay /dev/video74
в результате - видео передается в виртуальную камеру

Но чтобы такое воспроизвести с помощью кода на питоне, мешают некоторые моменты:
1) pip не "знает" пакет v4l2loopback:
pip install v4l2loopback
ERROR: Could not find a version that satisfies the requirement v4l2loopback (from versions: none)
ERROR: No matching distribution found for v4l2loopback

в результате чего нет возможности установить этот пакет через зависимость. проект не личный, нужен функционал установки пакета через зависимость
также pip знаком с некоторыми смежными пакетами (например, pyv4l2), но этого не хватает для полноценной работы нужного функционала

2) даже если пакет удастся установить через зависимость, непонятно, как выполнять команду с sudo
sudo modprobe v4l2loopback exclusive_caps=1 max_width=4096 max_height=4096 video_nr=74 max_buffers=2 card_label="Virtual Camera"


Задача решается с целью применения в автотесте.

Можно ли как-то обойти эти 2 проблемы?
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Извини, а у тебя ничего не ёкнуло вот тут?
sudo apt install v4l2loopback
pip install v4l2loopback
Ты понимаешь разницу между этими двумя командами?
Первая - задействует системный менеджер пакетов для дистрибутивов на базе debian (deb-пакетов).
Вторая - задействует встроенный менеджер пакетов питона.
Это совершенно разные вещи, и они работают с совершенно разными репозиториями.
Установить deb-пакет в систему, на которой будешь тестить, достаточно будет один раз.
Прописать мод можно в /etc/modules, но можно и тупо делать modprobe при загрузке системы.
И то и то, я полагаю, можно сделать хоть на живой системе, хоть внутри докера.

После этого в автотесте запускаешь ffmpeg, можно даже тупо через subprocess вместо питоновских модулей. Сюрприз, сюрприз! Они все, насколько я знаю, именно так и делают под капотом. Я не видел модуля, который бы имел интегрированный ffmpeg.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы