使用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