ブラウザ/プラットフォームが「getDisplayMedia」による画面キャプチャをサポートしているかどうかを確認します


8

を介して画面またはウィンドウへのメディアストリームをリクエストできますnavigator.mediaDevices.getDisplayMedia()。ただし、これにより、使用するキャプチャの種類を決定するようにすぐにユーザーに求められます。ブラウザ/プラットフォームがスクリーンキャプチャをサポートしているかどうかを確認する必要があります。

もちろん、をチェックすることは可能ですが、これは'getDisplayMedia' in navigator.mediaDevicesAPIがブラウザーでサポートされているかどうかを示すだけです。特に、FFおよびAndroid上のChromeでは、APIが定義されており、を呼び出すことができますgetDisplayMedia()が、常に即座にNotAllowedErrorエラーが返されます(これは予期されることです:caniuseよると、モバイルブラウザーはまだサポートしていませんgetDisplayMedia)。

次にチェックしてみましたnavigator.mediaDevices.getSupportedConstraints()。ただし、モバイルFFはデスクトップFFとまったく同じオブジェクトを返します。特に、navigator.mediaDevices.getSupportedConstraints().mediaSourceあるtrue両方の場合において。最後に、から返されたデータnavigator.mediaDevices.enumerateDevices()も役に立ちません。どうしても解釈できないデバイスとグループIDしか取得しません(そうですか?)

経由の画面キャプチャgetDisplayMediaがサポートされているかどうかを事前に検出することはできますか?

このQ&Aはかなり類似しているように見えますが、それについてgetUserMediaであり、すでにかなり古いものです)


HTTPSを使用していますか?
str

@strはい、そうです。また、この質問は「getDisplayMediaモバイルでは使用できません」に関するものではありません。それで結構です。サポートされているかどうかを確認したいだけです。
Lukas Kalbertodt

getDisplayMediaはpromiseを返しませんか?
aksappy

@aksappyはい。どうして?それがどのように役立つかはわかりません。エラー(モバイルの場合)にすぐに解決するか、ブラウザー(サポートされている場合はデスクトップ)からユーザーにプロンプ​​トが表示されます。
Lukas Kalbertodt

まあ、それは会話のスターターの詳細でした:-) MediaRecorderを見たことがありますか?isTypeSupportedメソッドでユースケースを解決します。
aksappy

回答:


6

残念ながら、これらのブラウザでgetDisplayMediaが機能するかどうかを機能検出する直接の方法はありません。

今日できることは、UA文字列ブラウザーでスニッフィングして、サポートが不足しているモバイルではないことを検出することです。¹

私が提出されてきた仕様上の問題をどうかを確認するために、あなたの質問に基づいてgetDisplayMediaが良く残っているundefinedとき、サポートされていません。


1. caniuseはOpera Mobileがサポートしていると主張していますが、私がテストしたところそうではありません。


1
このchromiumバグレポートに賛成
p /
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.