我们可以通过 向屏幕或窗口请求媒体流navigator.mediaDevices.getDisplayMedia()
。但是,这会立即提示用户决定使用哪种捕获方式。我需要检查浏览器/平台是否甚至支持屏幕捕获。
当然,也可以检查'getDisplayMedia' in navigator.mediaDevices
,但这只是告诉我们浏览器是否支持 API。特别是在 FF 和 Android 上的 Chrome 上,定义了 API,我可以调用getDisplayMedia()
,但它总是立即返回NotAllowedError
错误(这是可以预料的:根据 caniuse,移动浏览器尚不支持getDisplayMedia
。)
接下来,我尝试检查navigator.mediaDevices.getSupportedConstraints()
. 但是,我的移动 FF 返回与我的桌面 FF 完全相同的对象。特别navigator.mediaDevices.getSupportedConstraints().mediaSource
是true
在这两种情况下。最后,返回的数据navigator.mediaDevices.enumerateDevices()
对我也没有帮助。我只得到一个我无法以任何方式解释的设备和组 ID(对吗?)。
getDisplayMedia
是否可以预先检测是否支持屏幕截图?
(注意:这个问答看起来很相似,但是getUserMedia
已经很老了)