web-dev-qa-db-fra.com

Vérifiez si la capture d'écran de prise en charge du navigateur / de la plateforme via «getDisplayMedia»

Nous pouvons demander un flux multimédia vers un écran ou des fenêtres via navigator.mediaDevices.getDisplayMedia(). Cependant, cela invite immédiatement l'utilisateur à décider du type de capture à utiliser. Je dois vérifier si le navigateur/la plateforme prend même en charge la capture d'écran.

Bien sûr, il est possible de vérifier 'getDisplayMedia' in navigator.mediaDevices, Mais cela nous indique simplement si l'API est prise en charge par le navigateur. En particulier, sur FF et Chrome sur Android, l'API est définie et je peux appeler getDisplayMedia(), mais elle renvoie toujours immédiatement une erreur NotAllowedError (qui est à prévoir: selon caniuse , les navigateurs mobiles ne supportent pas encore getDisplayMedia.)

Ensuite, j'ai essayé de vérifier navigator.mediaDevices.getSupportedConstraints(). Cependant, mon FF mobile renvoie exactement le même objet que mon FF de bureau. En particulier, navigator.mediaDevices.getSupportedConstraints().mediaSource est true dans les deux cas. Enfin, les données renvoyées par navigator.mediaDevices.enumerateDevices() ne m'aident pas non plus. Je ne reçois qu'un identifiant d'appareil et de groupe que je ne peux en aucun cas interpréter (non?).

Est-il possible de détecter si la capture d'écran via getDisplayMedia est prise en charge au préalable?

( Remarque: ce Q&R semble assez similaire, mais concerne getUserMedia et est déjà assez ancien)

8
Lukas Kalbertodt

Malheureusement, il n'existe aucun moyen direct de détecter si getDisplayMedia fonctionnera sur ces navigateurs.

Tout ce que vous pouvez faire aujourd'hui est sniffer la chaîne UA par navigateur pour détecter que vous n'êtes pas sur mobile, là où le support fait défaut.¹

J'ai déposé un problème sur la spécification basé sur votre question, pour voir si getDisplayMedia est mieux à gauche undefined lorsqu'il n'est pas pris en charge.


1. caniuse claims Opera Mobile a un support, mais cela n'apparaît pas quand je testez-le .

6
jib