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

Luk*_*odt 6 javascript getusermedia mediadevices get-display-media

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

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

接下来,我尝试检查navigator.mediaDevices.getSupportedConstraints()。但是,我的移动FF返回与桌面FF完全相同的对象。尤其navigator.mediaDevices.getSupportedConstraints().mediaSourcetrue在这两种情况下。最后,返回的数据navigator.mediaDevices.enumerateDevices()也无济于事。我只能得到无法以任何方式解释的设备和组ID(对吗?)。

是否可以getDisplayMedia事先检测是否支持通过屏幕捕获?

注意此问答似乎相当相似,但getUserMedia已经相当久远了)

jib*_*jib 6

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

您今天所能做的就是通过浏览器嗅探 UA 字符串,以检测您不是在缺乏支持的移动设备上。¹

我已经根据您的问题在规范上提出了一个问题,看看getDisplayMediaundefined在不受支持时是否更好。


1. caniuse声称 Opera Mobile 支持,但当我测试它时似乎并非如此。