我们可以通过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
,已经很老了)
答案 0 :(得分:3)
不幸的是,没有直接的方法来检测 getDisplayMedia 在这些浏览器上是否可以工作。
您今天能做的就是browser-sniff the UA string,以检测您不在缺少支持的移动设备上。¹
我已根据您的问题提交了issue on the spec,以查看在不受支持的情况下 getDisplayMedia 是否最好留在undefined
。