检查是否通过`getDisplayMedia`捕获浏览器/平台支持的屏幕

时间:2019-11-13 17:49:24

标签: javascript getusermedia mediadevices get-display-media

我们可以通过navigator.mediaDevices.getDisplayMedia()向屏幕或窗口请求媒体流。但是,这立即提示用户决定要使用哪种捕获。我需要检查浏览器/平台是否支持屏幕捕获。

当然可以检查'getDisplayMedia' in navigator.mediaDevices,但这只是告诉我们浏览器是否支持该API。特别是在FF和Android上的Chrome上,已定义了API,我可以调用getDisplayMedia(),但始终会立即返回一个NotAllowedError错误(可以预期:according to caniuse,移动浏览器尚不支持getDisplayMedia。)

接下来,我尝试检查navigator.mediaDevices.getSupportedConstraints()。但是,我的移动FF返回与桌面FF完全相同的对象。特别是,在两种情况下,navigator.mediaDevices.getSupportedConstraints().mediaSource都是true。最后,navigator.mediaDevices.enumerateDevices()返回的数据也没有帮助。我只会得到无法以任何方式解释的设备和组ID(对吗?)。

是否可以预先检测是否支持通过getDisplayMedia截屏?

注意this Q&A似乎很相似,但大约是getUserMedia,已经很老了)

1 个答案:

答案 0 :(得分:3)

不幸的是,没有直接的方法来检测 getDisplayMedia 在这些浏览器上是否可以工作。

您今天能做的就是browser-sniff the UA string,以检测您不在缺少支持的移动设备上。¹

我已根据您的问题提交了issue on the spec,以查看在不受支持的情况下 getDisplayMedia 是否最好留在undefined


1。 caniuse声称Opera Mobile有支持,但是当我test it时似乎不是这样。