Docker Firefox 中的 getUserMedia 在使用音频时不起作用
getUserMedia in Firefox in Docker not working when using audio
在 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[=23= 连接到浏览器(在容器中) ]
注意2:这个版本(3.4.0)使用的是Firefox 53。从Firefox 52(即52、53、54)开始也出现这个问题,但问题确实存在在 Firefox 51 中不会发生 (node-firefox-debug:3.1.0)
3) 使用VNC客户端连接浏览器(URL in Linux:vnc://127.0.0.1:5900,密码:secret)
4) 强制在 dockerized 浏览器中使用虚假媒体。这可以通过在 Firefox 的高级配置(选项卡 about:config
)中设置 true
配置键 media.navigator.streams.fake
来完成:
5) 打开getUserMedia samples page in Firefox in Docker. For instance, the Basic getUserMedia demo工作正常:
我检查了这个演示是否有效,因为在 mediaConstraints
中 音频标志设置为 false:
var constraints = window.constraints = {
audio: false,
video: true
};
然而,任何其他将音频标志设置为 true 的演示都不会工作,并且 getUserMedia
功能会停止。
奇怪的是这种行为只能在 Docker 中重现,也就是说,任何版本的 Firefox 运行 直接在主机上都可以正常工作。好像这里有什么bug,但我不确定是在哪个部分。
这里的问题在哪里? Docker?火狐?
我们在 travis-ci 上遇到了同样的问题 运行 adapter.js。解决方案如图in this pull request——你需要启动pulseaudio
在 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[=23= 连接到浏览器(在容器中) ]
注意2:这个版本(3.4.0)使用的是Firefox 53。从Firefox 52(即52、53、54)开始也出现这个问题,但问题确实存在在 Firefox 51 中不会发生 (node-firefox-debug:3.1.0)
3) 使用VNC客户端连接浏览器(URL in Linux:vnc://127.0.0.1:5900,密码:secret)
4) 强制在 dockerized 浏览器中使用虚假媒体。这可以通过在 Firefox 的高级配置(选项卡 about:config
)中设置 true
配置键 media.navigator.streams.fake
来完成:
5) 打开getUserMedia samples page in Firefox in Docker. For instance, the Basic getUserMedia demo工作正常:
我检查了这个演示是否有效,因为在 mediaConstraints
中 音频标志设置为 false:
var constraints = window.constraints = {
audio: false,
video: true
};
然而,任何其他将音频标志设置为 true 的演示都不会工作,并且 getUserMedia
功能会停止。
奇怪的是这种行为只能在 Docker 中重现,也就是说,任何版本的 Firefox 运行 直接在主机上都可以正常工作。好像这里有什么bug,但我不确定是在哪个部分。
这里的问题在哪里? Docker?火狐?
我们在 travis-ci 上遇到了同样的问题 运行 adapter.js。解决方案如图in this pull request——你需要启动pulseaudio