Überprüfen Sie, ob die Bildschirmaufnahme der Browser- / Plattformunterstützung über getDisplayMedia unterstützt wird

8

Wir können einen Medienstream auf einen Bildschirm oder Windows über anfordern navigator.mediaDevices.getDisplayMedia(). Dies fordert den Benutzer jedoch sofort auf, zu entscheiden, welche Art der Erfassung verwendet werden soll. Ich muss überprüfen, ob der Browser / die Plattform überhaupt die Bildschirmaufnahme unterstützt.

Natürlich ist es möglich zu prüfen 'getDisplayMedia' in navigator.mediaDevices, aber dies sagt uns nur, ob die API vom Browser unterstützt wird. Insbesondere unter FF und Chrome unter Android ist die API definiert und ich kann sie aufrufen getDisplayMedia(), aber sie gibt immer sofort einen NotAllowedErrorFehler zurück (was zu erwarten ist: Laut caniuse unterstützen die mobilen Browser dies noch nicht getDisplayMedia.)

Als nächstes habe ich versucht zu überprüfen navigator.mediaDevices.getSupportedConstraints(). Mein mobiles FF gibt jedoch genau das gleiche Objekt zurück wie mein Desktop-FF. Insbesondere navigator.mediaDevices.getSupportedConstraints().mediaSourceist truein beiden Fällen. Schließlich navigator.mediaDevices.enumerateDevices()helfen mir auch die von zurückgegebenen Daten nicht weiter. Ich bekomme nur eine Geräte- und Gruppen-ID, die ich in keiner Weise interpretieren kann (richtig?).

Kann man getDisplayMediavorher erkennen, ob die Bildschirmaufnahme über unterstützt wird oder nicht ?

( Hinweis : Diese Fragen und Antworten scheinen ziemlich ähnlich zu sein, sind aber ungefähr getUserMediaund schon ziemlich alt.)

Lukas Kalbertodt
quelle
Verwenden Sie HTTPS?
Str
@str Ja, das bin ich. Beachten Sie auch, dass es bei dieser Frage nicht um "Ich kann nicht getDisplayMediaauf Mobilgeräten verwenden" geht. Das ist gut für mich. Ich möchte nur überprüfen, ob es unterstützt wird oder nicht .
Lukas Kalbertodt
Gibt getDisplayMedia kein Versprechen zurück?
Aksappy
@aksappy Ja. Warum? Ich sehe nicht, wie mir das helfen würde. Entweder wird der Fehler sofort behoben (auf Mobilgeräten) oder der Benutzer wird vom Browser aufgefordert (Desktop, falls unterstützt).
Lukas Kalbertodt
Nun, das war eher ein Gesprächsstarter :-) Haben Sie sich MediaRecorder angesehen? Es löst Ihren Anwendungsfall mit einer isTypeSupported-Methode.
Aksappy

Antworten:

6

Leider gibt es keine direkte Möglichkeit, Funktionen zu erkennen, ob getDisplayMedia in diesen Browsern funktioniert.

Alles, was Sie heute tun können, ist, die UA-Zeichenfolge mit dem Browser zu durchsuchen, um festzustellen, dass Sie nicht mobil sind, wo die Unterstützung fehlt.¹

Ich habe aufgrund Ihrer Frage ein Problem mit der Spezifikation eingereicht , um festzustellen, ob getDisplayMedia besser undefinednicht unterstützt wird.


1. caniuse behauptet, dass Opera Mobile Unterstützung hat, aber dies scheint nicht so zu sein, wenn ich es teste .

Ausleger
quelle
1
Bitte stimmen Sie diesem Chrom-Fehlerbericht zu, um diese behobenen
jpodwys