Webcam falsa / controlável para o Chrome dentro do contêiner do Docker

3

Antecedentes

Estou tentando controlar a entrada para um aplicativo da Web WebRTC em execução no Chrome, controlado pelo Selenium, dentro de um contêiner do Docker.

Isso faz parte de um teste automatizado do aplicativo WebRTC.

Como parte do teste, desejo enviar vídeo controlado e (de preferência controlado) para o Chrome em execução no Docker.

Eu já tenho entrada de áudio controlável usando um dispositivo de áudio falso , mas usar isso significa que eu tenho um microfone "real" no Chrome e não posso usar a funcionalidade de dispositivo falso para emular a entrada de vídeo.
A função de recurso de captura de áudio do Chrome - use-file-for-fake-audio só funciona se --use-fake-device-for-media-stream também estiver ativo, o que desabilitará o acesso à entrada de microfone do sistema.

Problema

Eu preciso de uma maneira de simular uma webcam de tal forma que ela possa ser usada no Chrome para uma chamada de vídeo do WebRTC, tudo dentro de um contêiner do Docker.
Idealmente, eu também deveria ser capaz de controlar a imagem nessa webcam falsa.

Encontrei vários posts em que as pessoas conseguiram que os contêineres do Docker usassem os dispositivos da webcam (inclusive os falsos) no sistema host, mas isso é um mapeamento para um único dispositivo no host, e quero poder execute vários contêineres do Docker (20+) no mesmo host, cada um com seu próprio dispositivo de webcam exclusivo.

A maneira padrão de fazer isso parece estar usando o driver v4l2loopback, mas isso é um módulo do kernel, e o Docker usa o kernel do host e, portanto, não pode carregar seus próprios módulos dentro de contêineres.

Em teoria, seria possível criar vários dispositivos de webcam falsos nos hosts e mapear cada um deles para um contêiner Docker, embora isso fosse um pesadelo logístico (o teste precisaria controlar as câmeras no host, e não do que conversar com os containers), e v4l2loopback é limitado a 8 dispositivos em qualquer caso (novamente, teoricamente eu poderia recompilar o driver para suportar mais).

Parece que o que estou realmente procurando é uma maneira de falsificar um dispositivo de webcam no espaço do usuário em vez do espaço do kernel.
Eu encontrei um driver de webcam userspace chamado UV4L , mas é para o Raspberry Pi (arquitetura ARM.)

Pergunta

Alguém sabe como controlar vídeo no dispositivo de captura do Chrome dentro de um contêiner do Docker, usando um dispositivo de captura falso no espaço do usuário ou por outros meios?

    
por Nameless Voice 28.08.2017 / 16:59

1 resposta

0

Obrigado pela ótima postagem sobre emulação de entrada de áudio. Em relação à webcam, você já tentou a seguinte opção do Chrome:     - use-file-for-falso-video-capture

link

    
por 09.10.2017 / 11:05