通过 `getDisplayMedia` 检查 browser/platform 是否支持屏幕捕获
Check if browser/platform support screen capturing via `getDisplayMedia`
我们可以通过 navigator.mediaDevices.getDisplayMedia()
向屏幕或 windows 请求媒体流。但是,这会立即提示用户决定使用哪种捕获。我需要检查 browser/platform 是否支持屏幕捕获。
当然,可以检查'getDisplayMedia' in navigator.mediaDevices
,但这只是告诉我们浏览器是否支持API。特别是,在 Android 上的 FF 和 Chrome 上,定义了 API,我可以调用 getDisplayMedia()
,但它总是立即 returns a NotAllowedError
错误(这是意料之中的:according to caniuse,移动浏览器尚不支持getDisplayMedia
。)
接下来,我尝试检查 navigator.mediaDevices.getSupportedConstraints()
。但是,我的移动 FF returns 与我的桌面 FF 完全相同。特别是,navigator.mediaDevices.getSupportedConstraints().mediaSource
在这两种情况下都是 true
。最后,navigator.mediaDevices.enumerateDevices()
返回的数据对我也没有帮助。我只得到一个我无法以任何方式解释的设备和组 ID(对吗?)。
是否可以预先检测是否支持通过getDisplayMedia
截屏?
(注意: 看起来很相似,但是大约 getUserMedia
并且已经很老了)
不幸的是,没有直接的方法来检测 getDisplayMedia 是否适用于这些浏览器。
今天您所能做的就是browser-sniff the UA string检测您不在移动设备上,缺少支持。¹
我已经根据你的问题提交了 issue on the spec,看看 getDisplayMedia 在不受支持时是否更好 undefined
。
1. caniuse claims Opera Mobile has support, but this appears not so when I test it.
我们可以通过 navigator.mediaDevices.getDisplayMedia()
向屏幕或 windows 请求媒体流。但是,这会立即提示用户决定使用哪种捕获。我需要检查 browser/platform 是否支持屏幕捕获。
当然,可以检查'getDisplayMedia' in navigator.mediaDevices
,但这只是告诉我们浏览器是否支持API。特别是,在 Android 上的 FF 和 Chrome 上,定义了 API,我可以调用 getDisplayMedia()
,但它总是立即 returns a NotAllowedError
错误(这是意料之中的:according to caniuse,移动浏览器尚不支持getDisplayMedia
。)
接下来,我尝试检查 navigator.mediaDevices.getSupportedConstraints()
。但是,我的移动 FF returns 与我的桌面 FF 完全相同。特别是,navigator.mediaDevices.getSupportedConstraints().mediaSource
在这两种情况下都是 true
。最后,navigator.mediaDevices.enumerateDevices()
返回的数据对我也没有帮助。我只得到一个我无法以任何方式解释的设备和组 ID(对吗?)。
是否可以预先检测是否支持通过getDisplayMedia
截屏?
(注意: getUserMedia
并且已经很老了)
不幸的是,没有直接的方法来检测 getDisplayMedia 是否适用于这些浏览器。
今天您所能做的就是browser-sniff the UA string检测您不在移动设备上,缺少支持。¹
我已经根据你的问题提交了 issue on the spec,看看 getDisplayMedia 在不受支持时是否更好 undefined
。
1. caniuse claims Opera Mobile has support, but this appears not so when I test it.