使用audio时,Docker中的Firefox中的getUserMedia不起作用

在Docker中使用Firefox 52 +时,我遇到了WebRTC的getUserMedia函数的奇怪行为。 重现它的步骤是:

1)在Docker中运行一个Selenium Hub:

 docker run --rm --name selenium-hub -p 4444:4444 selenium/hub:3.4.0 

2)在集线器中注册Firefox浏览器:

 docker run --rm --link selenium-hub:hub -p 5555:5555 -p 5900:5900 selenium/node-firefox-debug:3.4.0 

注1 :此命令使用的是node-firefox图像的debugging版本,因为我们想要使用VNC连接到浏览器(在容器中)

注2 :此版本(3.4.0)使用的是Firefox 53.自Firefox 52(即52,53,54)以来也出现此问题,但在Firefox 51中没有发生此问题(node-firefox-debug:3.1.0 )

3)使用VNC客户端连接到浏览器(Linux中的URL:vnc://127.0.0.1:5900,密码:秘密)

4)强制在docker化浏览器中使用假媒体。 这可以在Firefox的高级configuration(tab about:config )中设置为true来configuration关键字media.navigator.streams.fake

在这里输入图像说明

5)在Docker的Firefox中打开getUserMedia示例页面 。 例如, 基本的getUserMedia演示工作正常:

在这里输入图像说明

我检查这个演示正在工作,因为在mediaConstraints audio标志设置为false

 var constraints = window.constraints = { audio: false, video: true }; 

尽pipe如此,任何其他演示将audio标志设置为true将不起作用,并且getUserMedia函数被阻止。

奇怪的是,这种行为只能在Docker中进行复制,即任何直接在主机上运行的Firefox版本都能正常工作。 看来这里有一些bug,但是我不确定这个难题的哪一部分。

这里的问题在哪里? 泊坞窗? 火狐?

我们在travis-ci上运行adapter.js时遇到了同样的问题。 解决scheme显示在这个拉请求 – 你需要启动pulseaudio