2

我一直在使用 Javascript 中的 getUserMedia() 构建一个演示,以获取设备网络摄像头并将视频流绘制到 html5 画布上。对于不支持 getUserMedia() 的浏览器,我默认使用 Flash 版本的演示。

现在这一切在 Chrome 和 Opera 以及几乎在 Firefox 18 中都可以正常工作。但是 Firefox 仍然存在问题 - 在配置文件中 media.navigator.enabled 默认仍设置为 false。这意味着用户无法选择是否启用相机,我的脚本只是等待永远不会出现的答案。

现在显然我无法在配置文件中更改或设置此首选项,我也不想这样做。但是,无论如何获取此标志的值,以便我可以在继续“if(media.navigator.enabled)...”之前运行检查?

否则,我将不得不始终将 Flash 用于 Firefox,这有点可惜。

演示在这里

4

1 回答 1

0

media.navigator.enabled偏好不是应该由用户打开的东西。之所以设置为,false是因为此功能在 Firefox 18 中还不够成熟,目前仅包含用于测试。好消息:它将在 Firefox 20 中默认启用。Firefox 20 应该在 3 月 2 日发布,几天后您已经可以假设 Firefox 支持此功能(只有极少数的 Firefox 用户继续使用旧版本)。

坏消息:我认为你不能很好地处理旧的 Firefox 版本。他们也有navigator.mozGetUserMedia()方法,但它根本没有做任何事情。您可以选择超时(例如,如果在一分钟内既没有调用成功回调也没有调用错误回调,则切换到 Flash 回退)或用户代理嗅探。后者很难看,但对您来说可能是更好的解决方案:

var match = /\brv:([\d\.]+)/.exec(navigator.userAgent);
if (match && parseFloat(match[1]) < 20)
  alert("getUserMedia() not supported");

请注意,我明确地嗅探 Gecko 版本而不是 Firefox 版本——那里有更多基于 Gecko 的浏览器,而不仅仅是 Firefox。

于 2013-01-18T09:28:07.553 回答