使用音频时,Docker中的Firefox中的getUserMedia无法正常工作

时间:2017-06-27 08:20:52

标签: selenium firefox docker webrtc 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映像的调试版本,因为我们要使用VNC连接到浏览器(在容器中)

注意2 :此版本(3.4.0)使用的是Firefox 53.自Firefox 52(即52,53,54)以来也会出现此问题,但问题不会发生在Firefox 51中(节点火狐调试:3.1.0)

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

4)强制在dockerized浏览器中使用虚假媒体。这可以在Firefox的高级配置(选项卡true)中设置为media.navigator.streams.fake配置键about:config

enter image description here

5)在Docker中打开Firefox中的getUserMedia samples page。例如,Basic getUserMedia demo工作正常:

enter image description here

我检查了这个演示是否有效,因为mediaConstraints 音频标志设置为false

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

尽管如此,将audio标志设置为true的任何其他演示都不会起作用,并且getUserMedia函数会停止运行。

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

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

1 个答案:

答案 0 :(得分:2)

我们在travis-ci上运行adapter.js时遇到了同样的问题。解决方案显示为in this pull request - 您需要启动pulseaudio