navigator.mediaDevices.getDisplayMedia()
を使用して、画面またはウィンドウへのメディアストリームをリクエストできます。ただし、これにより、使用するキャプチャの種類を決定するようにすぐにユーザーに求められます。ブラウザ/プラットフォームがスクリーンキャプチャをサポートしているかどうかを確認する必要があります。
もちろん、_'getDisplayMedia' in navigator.mediaDevices
_を確認することは可能ですが、これはAPIがブラウザーでサポートされているかどうかを示すだけです。特に、FFとChromeでは、APIが定義されており、getDisplayMedia()
を呼び出すことができますが、常に即座にNotAllowedError
エラー(これは予想される: caniuseによると 、モバイルブラウザはまだgetDisplayMedia
をサポートしていません。)
次に、navigator.mediaDevices.getSupportedConstraints()
を確認してみました。ただし、モバイルFFはデスクトップFFとまったく同じオブジェクトを返します。特に、navigator.mediaDevices.getSupportedConstraints().mediaSource
はどちらの場合もtrue
です。最後に、navigator.mediaDevices.enumerateDevices()
から返されたデータも役に立ちません。どうしても解釈できないデバイスとグループIDしか取得しません(そうですか?).
getDisplayMedia
による画面キャプチャが事前にサポートされているかどうかを事前に検出できますか?
(注: このQ&A はかなり似ているようですが、getUserMedia
についてであり、かなり古いものです)
残念ながら、これらのブラウザでgetDisplayMediaが機能するかどうかを機能検出する直接的な方法はありません。
今日できることは ブラウザのUA文字列をスニフする であり、サポートが不足しているモバイルではないことを検出します。¹
getDisplayMediaの方がよいかどうかを確認するために、質問に基づいて 仕様の問題 を提出しましたundefined
サポートされていない場合。
1. caniuse クレームOperaモバイルはサポートしていますが、私が test it をすると、そうではありません。