在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
:
5)在Docker中打开Firefox中的getUserMedia samples page。例如,Basic getUserMedia demo工作正常:
我检查了这个演示是否有效,因为mediaConstraints
音频标志设置为false :
var constraints = window.constraints = {
audio: false,
video: true
};
尽管如此,将audio标志设置为true的任何其他演示都不会起作用,并且getUserMedia
函数会停止运行。
奇怪的是这种行为只能在Docker中重现,即直接在主机上运行的任何版本的Firefox都能正常工作。看来这里有一些错误,但我不确定这个难题的哪个部分。
这里的问题在哪里?泊坞窗?火狐?
答案 0 :(得分:2)
我们在travis-ci上运行adapter.js时遇到了同样的问题。解决方案显示为in this pull request - 您需要启动pulseaudio