Фон
Я пытаюсь контролировать ввод данных в веб-приложение WebRTC, работающее в Chrome под управлением Selenium, внутри контейнера Docker.
Это часть автоматизированного тестирования приложения WebRTC.
В рамках тестирования я хочу отправлять контролируемое аудио и (предпочтительно контролируемое) видео в Chrome, работающий в Docker.
у меня уже естьуправляемый аудиовход с использованием поддельного аудиоустройства, но использование этого означает, что у меня есть "настоящий" микрофон в Chrome, и я не могу использовать его функциональность поддельного устройства для эмуляции видеовхода.
Функция Chrome --use-file-for-fake-audio-capture работает только если также активна --use-fake-device-for-media-stream, что отключит доступ к системному микрофонному входу.
Проблема
Мне нужен способ эмулировать веб-камеру таким образом, чтобы ее можно было использовать в Chrome для видеозвонка WebRTC, все внутри контейнера Docker.
В идеале я также должен иметь возможность управлять изображением в этой фальшивой веб-камере.
Я наткнулся на несколько сообщений, в которых люди успешно заставили контейнеры Docker использовать веб-камеры (в том числе поддельные) на хост-системе, но это сопоставление с одним устройством на хосте, а я хочу иметь возможность запускать несколько контейнеров Docker (более 20) на одном хосте, каждый со своим собственным уникальным устройством веб-камеры.
Стандартным способом сделать это, по-видимому, является использование драйвера v4l2loopback, но это модуль ядра, а Docker использует ядро хоста и поэтому не может загружать собственные модули внутрь контейнеров.
Теоретически можно было бы создать несколько поддельных веб-камер на хостах, а затем сопоставить каждую из них с контейнером Docker, хотя это было бы логистическим кошмаром (тесту пришлось бы управлять камерами на хосте, а не взаимодействовать с контейнерами), а v4l2loopback в любом случае ограничен 8 устройствами (опять же, теоретически я мог бы перекомпилировать драйвер для поддержки большего количества устройств).
Похоже, что я действительно ищу способ подделать устройство веб-камеры в пользовательском пространстве вместо пространства ядра.
Я нашел драйвер веб-камеры в пользовательском пространстве под названиемУФ4Л, но это для Raspberry Pi (архитектура ARM).
Вопрос
Кто-нибудь знает, как можно управлять видео на устройстве захвата Chrome внутри контейнера Docker, используя поддельное устройство захвата в пользовательском пространстве или какими-то другими способами?