Screen Capture API
Die Screen Capture API erweitert die bestehende Media Capture and Streams API, um es dem Benutzer zu ermöglichen, einen Bildschirm oder einen Teil eines Bildschirms (wie beispielsweise ein Fenster) auszuwählen, um diesen als Medienstream zu erfassen. Dieser Stream kann dann aufgezeichnet oder über das Netzwerk mit anderen geteilt werden.
Konzepte und Nutzung der Screen Capture API
Die Nutzung der Screen Capture API ist relativ einfach. Ihre einzige Methode ist MediaDevices.getDisplayMedia()
, deren Aufgabe es ist, den Benutzer aufzufordern, einen Bildschirm oder einen Teil eines Bildschirms zur Erfassung in Form eines MediaStream
auszuwählen.
Um mit der Erfassung des Videos vom Bildschirm zu beginnen, rufen Sie getDisplayMedia()
auf navigator.mediaDevices
auf:
captureStream =
await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
Das von getDisplayMedia()
zurückgegebene Promise
wird auf einen MediaStream
aufgelöst, der die erfassten Medien streamt.
Weitere ausführliche Informationen zur Nutzung der API, um Bildschirminhalte als Stream zu erfassen, finden Sie im Artikel Verwendung der Screen Capture API.
Die Screen Capture API verfügt außerdem über Funktionen, die den aufgenommenen Teil des Bildschirms im Stream einschränken:
- Die Element Capture API beschränkt die erfasste Region auf ein angegebenes gerendertes DOM-Element und dessen Nachkommen.
- Die Region Capture API schneidet die erfasste Region auf den Bereich des Bildschirms zu, in dem ein angegebenes DOM-Element gerendert wird.
Weitere Informationen finden Sie unter Verwendung der Element Capture und Region Capture APIs.
Schnittstellen
BrowserCaptureMediaStreamTrack
-
Repräsentiert eine einzelne Videospur; erweitert die Klasse
MediaStreamTrack
mit Methoden, um den Teil eines Selbstaufnahme-Streams (zum Beispiel der Bildschirm oder das Fenster eines Benutzers) zu begrenzen. CaptureController
-
Bietet Methoden, mit denen eine Aufnahmesitzung weiter manipuliert werden kann, getrennt von ihrer Einleitung über
MediaDevices.getDisplayMedia()
. EinCaptureController
-Objekt wird mit einer Aufnahmesitzung assoziiert, indem es in einen Aufruf vongetDisplayMedia()
als Wert dercontroller
-Eigenschaft im Optionsobjekt übergeben wird. CropTarget
-
Bietet eine statische Methode,
fromElement()
, die eineCropTarget
-Instanz zurückgibt, die verwendet werden kann, um eine aufgenommene Videospur auf den Bereich zuzuschneiden, in dem ein bestimmtes Element gerendert wird. RestrictionTarget
-
Bietet eine statische Methode,
fromElement()
, die eineRestrictionTarget
-Instanz zurückgibt, die verwendet werden kann, um eine aufgenommene Videospur auf ein bestimmtes DOM-Element zu beschränken.
Ergänzungen zur MediaDevices-Schnittstelle
MediaDevices.getDisplayMedia()
-
Die Methode
getDisplayMedia()
wird zurMediaDevices
-Schnittstelle hinzugefügt. Ähnlich wiegetUserMedia()
erzeugt diese Methode ein Promise, das mit einemMediaStream
aufgelöst wird, der den vom Benutzer ausgewählten Anzeigebereich enthält, in einem Format, das den angegebenen Optionen entspricht.
Ergänzungen vorhandener Wörterbücher
Die Screen Capture API fügt den folgenden Wörterbüchern, die durch andere Spezifikationen definiert sind, Eigenschaften hinzu.
MediaTrackConstraints
MediaTrackConstraints.displaySurface
-
Ein
ConstrainDOMString
, der angibt, welcher Typ von Anzeigefläche erfasst werden soll. Der Wert ist einer vonbrowser
,monitor
oderwindow
. MediaTrackConstraints.logicalSurface
-
Gibt an, ob das Video im Stream eine logische Anzeigefläche darstellt (also eine, die möglicherweise nicht vollständig sichtbar oder komplett vom Bildschirm verschwunden ist). Ein Wert von
true
gibt an, dass eine logische Anzeigefläche erfasst werden soll. MediaTrackConstraints.suppressLocalAudioPlayback
-
Kontrolliert, ob das Audio, das in einem Tab abgespielt wird, weiterhin aus den lokalen Lautsprechern eines Benutzers wiedergegeben wird, wenn der Tab erfasst wird, oder ob es unterdrückt wird. Ein Wert von
true
zeigt an, dass es unterdrückt wird.
MediaTrackSettings
MediaTrackSettings.cursor
-
Ein String, der angibt, ob die derzeit erfasste Anzeigefläche den Mauszeiger enthält und ob er sichtbar ist, während die Maus in Bewegung ist, oder ob er immer sichtbar ist. Der Wert ist einer von
always
,motion
odernever
. MediaTrackSettings.displaySurface
-
Ein String, der angibt, welcher Typ von Anzeigefläche derzeit erfasst wird. Der Wert ist einer von
browser
,monitor
oderwindow
. MediaTrackSettings.logicalSurface
-
Ein boolescher Wert, der
true
ist, wenn das erfasste Video nicht direkt einer einzigen Anzeigefläche auf dem Bildschirm entspricht. MediaTrackSettings.suppressLocalAudioPlayback
-
Ein boolescher Wert, der
true
ist, wenn das erfasste Audio nicht über die lokalen Lautsprecher des Benutzers wiedergegeben wird.
MediaTrackSupportedConstraints
MediaTrackSupportedConstraints.displaySurface
-
Ein boolean, der
true
ist, wenn die aktuelle Umgebung die EinschränkungMediaTrackConstraints.displaySurface
unterstützt. MediaTrackSupportedConstraints.logicalSurface
-
Ein boolean, der
true
ist, wenn die aktuelle Umgebung die EinschränkungMediaTrackConstraints.logicalSurface
unterstützt. MediaTrackSupportedConstraints.suppressLocalAudioPlayback
-
Ein boolean, der
true
ist, wenn die aktuelle Umgebung die EinschränkungMediaTrackConstraints.suppressLocalAudioPlayback
unterstützt.
Überprüfung der Berechtigungsrichtlinie
User Agents, die Permissions Policy unterstützen (entweder durch den HTTP Permissions-Policy
-Header oder das <iframe>
-Attribut allow
), können ein Interesse an der Nutzung der Screen Capture API mit der Direktive display-capture
angeben:
<iframe allow="display-capture" src="/some-other-document.html">…</iframe>
Die Standard-Zulassungsliste ist self
, was bedeutet, dass jeder Inhalt innerhalb desselben Ursprungs die Screen Capture verwenden kann.
Spezifikationen
Specification |
---|
Screen Capture |
Element Capture |
Region Capture |
Browser-Kompatibilität
api.MediaDevices.getDisplayMedia
BCD tables only load in the browser
api.CropTarget
BCD tables only load in the browser
api.RestrictionTarget
BCD tables only load in the browser