배경
Docker 컨테이너 내에서 Selenium으로 제어되는 Chrome에서 실행되는 WebRTC 웹 애플리케이션에 대한 입력을 제어하려고 합니다.
이는 WebRTC 애플리케이션의 자동화된 테스트의 일부입니다.
테스트의 일환으로 제어된 오디오 및 (바람직하게는 제어된) 비디오를 Docker에서 실행되는 Chrome으로 보내고 싶습니다.
난 이미 가지고 있는데가짜 오디오 장치를 사용하여 제어 가능한 오디오 입력, 그러나 이를 사용한다는 것은 Chrome에 "실제" 마이크가 있고 가짜 장치 기능을 사용하여 비디오 입력을 에뮬레이션할 수 없음을 의미합니다.
Chrome의 --use-file-for-fake-audio-capture 기능은 --use-fake-device-for-media-stream도 활성화되어 시스템의 마이크 입력에 대한 액세스가 비활성화되는 경우에만 작동합니다.
문제
Docker 컨테이너 내부에서 WebRTC 화상 통화를 위해 Chrome에서 사용할 수 있는 방식으로 웹캠을 에뮬레이션하는 방법이 필요합니다.
이상적으로는 가짜 웹캠의 사진도 제어할 수 있어야 합니다.
사람들이 호스트 시스템에서 웹캠 장치(가짜 장치 포함)를 사용하기 위해 Docker 컨테이너를 성공적으로 얻었지만 이는 호스트의 단일 장치에 대한 매핑이고 여러 Docker를 실행할 수 있기를 원하는 여러 게시물을 보았습니다. 동일한 호스트에 있는 컨테이너(20개 이상), 각각 고유한 웹캠 장치가 있습니다.
이를 수행하는 표준 방법은 v4l2loopback 드라이버를 사용하는 것 같지만 이는 커널 모듈이고 Docker는 호스트의 커널을 사용하므로 컨테이너 내부에 자체 모듈을 로드할 수 없습니다.
이론적으로는 호스트에 여러 개의 가짜 웹캠 장치를 생성한 다음 각 장치를 Docker 컨테이너에 매핑하는 것이 가능합니다. 그러나 이는 논리적으로 악몽이 될 것입니다(테스트에서는 호스트와 통신하는 대신 호스트의 카메라를 제어해야 합니다). 컨테이너), 그리고 v4l2loopback은 어떤 경우에도 8개의 장치로 제한됩니다. (다시 말하지만 이론적으로는 더 많은 장치를 지원하기 위해 드라이버를 다시 컴파일할 수 있습니다.)
내가 정말로 찾고 있는 것은 커널 공간 대신 사용자 공간에서 웹캠 장치를 위조하는 방법인 것 같습니다.
나는 다음과 같은 사용자 공간 웹캠 드라이버를 찾았습니다.UV4L, 그러나 이는 Raspberry Pi(ARM 아키텍처)용입니다.
질문
사용자 공간에서 가짜 캡처 장치를 사용하거나 다른 수단을 통해 Docker 컨테이너 내부의 Chrome 캡처 장치로 비디오를 제어할 수 있는 방법을 아는 사람이 있나요?