【问题标题】:getUserMedia in Firefox in Docker not working when using audio使用音频时,Docker 中的 Firefox 中的 getUserMedia 不起作用
【发布时间】:2017-06-27 08:20:51
【问题描述】:

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

1) 在 Docker 中运行 Selenium Hub:

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

2) 在 hub 中注册一个 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 中不会出现此问题(node-firefox-debug:3.1.0)

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

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

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

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

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

尽管如此,将音频标志设置为 true 的任何其他演示都无法运行,并且getUserMedia 函数会停止。

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

问题出在哪里?码头工人?火狐?

【问题讨论】:

    标签: selenium firefox docker webrtc getusermedia


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 2012-10-24
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多