MediaDevices: getDisplayMedia()-Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die getDisplayMedia()
-Methode der MediaDevices
-Schnittstelle fordert den Benutzer auf, die Erlaubnis zu erteilen, um den Inhalt eines Bildschirms oder eines Teils davon (wie z. B. ein Fenster) als MediaStream
zu erfassen.
Der resultierende Stream kann dann mit der MediaStream Recording API aufgenommen oder als Teil einer WebRTC-Sitzung übertragen werden.
Für weitere Details und ein Beispiel siehe Verwendung der Screen Capture API.
Syntax
getDisplayMedia()
getDisplayMedia(options)
Parameter
options
Optional-
Ein optionales Objekt, das Anforderungen für den zurückgegebenen
MediaStream
angibt. Die Optionen fürgetDisplayMedia()
funktionieren auf die gleiche Weise wie die Einschränkungen für dieMediaDevices.getUserMedia()
-Methode, obwohl in diesem Fall nuraudio
undvideo
angegeben werden können. Die Liste der möglichen Optionseigenschaften fürgetDisplayMedia()
lautet wie folgt:video
Optional-
Ein Boolean oder eine
MediaTrackConstraints
-Instanz; der Standardwert isttrue
. Wenn diese Option weggelassen oder auftrue
gesetzt wird, enthält der Stream einen Videotrack. Ein Wert vontrue
gibt an, dass der zurückgegebeneMediaStream
einen Videotrack enthalten wird. DagetDisplayMedia()
einen Videotrack erfordert, wird das Versprechen abgelehnt, wenn diese Option auffalse
gesetzt ist, mit einemTypeError
. audio
Optional-
Ein Boolean oder eine
MediaTrackConstraints
-Instanz; der Standardwert istfalse
. Ein Wert vontrue
gibt an, dass der zurückgegebeneMediaStream
einen Audiotrack enthalten wird, wenn Audio für die vom Benutzer gewählte Anzeigefläche unterstützt und verfügbar ist. controller
Experimentell Optional-
Eine
CaptureController
-Objektinstanz, die Methoden enthält, die verwendet werden können, um die Aufnahmesitzung weiter zu manipulieren, wenn sie enthalten ist. monitorTypeSurfaces
Experimentell Optional-
Ein Aufzählungswert, der angibt, ob der Browser ganze Bildschirme in den dem Benutzer präsentierten Bildschirmaufnahmeoptionen neben den Tab- und Fensteroptionen anbieten soll. Diese Option soll Unternehmen davor schützen, dass private Informationen durch Mitarbeiterfehler bei der Verwendung von Videoanwendungen durchsickern. Mögliche Werte sind
include
, was darauf hinweist, dass der Browser Bildschirmoptionen einschließen soll, undexclude
, was darauf hinweist, dass sie ausgeschlossen werden sollen. Ein Standardwert ist in der Spezifikation nicht festgelegt; siehe den Abschnitt Browser-Kompatibilität für browser-spezifische Standards.Hinweis: Sie können nicht gleichzeitig
monitorTypeSurfaces: "exclude"
unddisplaySurface: "monitor"
festlegen, da die beiden Einstellungen widersprüchlich sind. Wenn Sie dies versuchen, schlägt der Aufruf vongetDisplayMedia()
mit einemTypeError
fehl. preferCurrentTab
Nicht standardisiert Experimentell Optional-
Ein Boolean; ein Wert von
true
weist den Browser an, den aktuellen Tab als die am prominentesten zu erfassende Quelle anzubieten, d.h. als eine separate Option "Dieser Tab" in den dem Benutzer präsentierten Optionen "Was möchten Sie teilen". Dies ist nützlich, da viele Anwendungstypen im Allgemeinen nur den aktuellen Tab teilen möchten. Ein Folienpräsentations-App könnte beispielsweise dem Benutzer ermöglichen, den aktuellen Tab mit der Präsentation in eine virtuelle Konferenz zu streamen. Ein Standardwert ist in der Spezifikation nicht festgelegt; siehe den Abschnitt Browser-Kompatibilität für browser-spezifische Standards. selfBrowserSurface
Experimentell Optional-
Ein Aufzählungswert, der angibt, ob der Browser dem Benutzer erlauben soll, den aktuellen Tab für die Erfassung auszuwählen. Dies hilft, den Effekt des "unendlichen Spiegelsaals" zu vermeiden, der auftritt, wenn eine Videokonferenz-App unbeabsichtigt ihre eigene Anzeige teilt. Mögliche Werte sind
include
, was darauf hinweist, dass der Browser den aktuellen Tab in den zur Erfassung angebotenen Auswahlmöglichkeiten einschließen soll, undexclude
, was darauf hinweist, dass er ausgeschlossen werden soll. Ein Standardwert ist in der Spezifikation nicht festgelegt; siehe den Abschnitt Browser-Kompatibilität für browser-spezifische Standards. surfaceSwitching
Experimentell Optional-
Ein Aufzählungswert, der angibt, ob der Browser eine Steuerung anzeigen soll, die es dem Benutzer ermöglicht, den geteilten Tab während des Screen-Sharings dynamisch zu wechseln. Dies ist viel praktischer, als den gesamten Freigabeprozess jedes Mal erneut durchgehen zu müssen, wenn ein Benutzer den geteilten Tab wechseln möchte. Mögliche Werte sind
include
, was darauf hinweist, dass der Browser die Steuerung einschließen soll, undexclude
, was darauf hinweist, dass sie nicht gezeigt werden soll. Ein Standardwert ist in der Spezifikation nicht festgelegt; siehe den Abschnitt Browser-Kompatibilität für browser-spezifische Standards. systemAudio
Experimentell Optional-
Ein Aufzählungswert, der angibt, ob der Browser das Systemaudio zu den dem Benutzer angebotenen möglichen Audioquellen hinzufügen soll. Mögliche Werte sind
include
, was darauf hinweist, dass der Browser das Systemaudio in die Liste der Auswahlmöglichkeiten aufnehmen soll, undexclude
, was darauf hinweist, dass es ausgeschlossen werden soll. Ein Standardwert ist in der Spezifikation nicht festgelegt; siehe den Abschnitt Browser-Kompatibilität für browser-spezifische Standards.
Hinweis: Lesen Sie den Artikel Fähigkeiten, Einschränkungen und Einstellungen für weitere Details darüber, wie diese Optionen funktionieren.
Rückgabewert
Ein Promise
, das auf einen MediaStream
auflöst, der einen
Video-Track enthält, dessen Inhalt aus einem vom Benutzer ausgewählten Bildschirmbereich stammt, sowie einen optionalen
Audio-Track.
Hinweis: Die Unterstützung von Audio-Tracks durch Browser variiert, sowohl in Bezug darauf, ob sie überhaupt vom Media Recorder unterstützt werden, als auch was die unterstützten Audioquellen betrifft. Überprüfen Sie die Kompatibilitätstabelle für Details für jeden Browser.
Ausnahmen
AbortError
DOMException
-
Wird ausgelöst, wenn ein Fehler oder Fehlversagen keiner der anderen hier aufgeführten Ausnahmen entspricht.
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der Aufruf von
getDisplayMedia()
nicht durch Code ausgelöst wurde, der aufgrund einer vorübergehenden Aktivierung ausgeführt wird, wie z. B. ein Event-Handler. Oder wenn der Browser-Kontext nicht vollständig aktiv oder nicht fokussiert ist. Oder wenn diecontroller
-Option bereits zur Erstellung eines anderenMediaStream
verwendet wurde. NotAllowedError
DOMException
-
Wird ausgelöst, wenn die Erlaubnis zum Zugriff auf einen Bildschirmbereich vom Benutzer verweigert wurde oder die aktuelle Browsing-Instanz keinen Zugriff auf Bildschirmfreigabe hat (zum Beispiel durch eine Berechtigungsrichtlinie).
NotFoundError
DOMException
-
Wird ausgelöst, wenn keine Quellen für Bildschirmvideo zur Erfassung verfügbar sind.
NotReadableError
DOMException
-
Wird ausgelöst, wenn der Benutzer einen Bildschirm, ein Fenster, einen Tab oder eine andere Quelle von Bildschirmdaten ausgewählt hat, aber ein Hardware- oder Betriebssystemfehler oder eine Sperre auftrat, die das Teilen der ausgewählten Quelle verhindert.
OverconstrainedError
DOMException
-
Wird ausgelöst, wenn nach der Erstellung des Streams das Anwenden festgelegter Einschränkungen fehlschlägt, weil kein kompatibler Stream generiert werden konnte.
TypeError
-
Wird ausgelöst, wenn die angegebenen
options
Werte enthalten, die bei der Aufrufung vongetDisplayMedia()
nicht zulässig sind, beispielsweise einevideo
-Eigenschaft, die auf false gesetzt ist, oder wenn angegebeneMediaTrackConstraints
nicht erlaubt sind.min
undexact
Werte sind in Einschränkungen, die ingetDisplayMedia()
-Aufrufen verwendet werden, nicht erlaubt.
Sicherheit
Da getDisplayMedia()
auf böswillige Weise verwendet werden könnte, kann es eine
Quelle erheblicher Datenschutz- und Sicherheitsbedenken sein. Aus diesem Grund legt die Spezifikation
Maßnahmen fest, die Browser ergreifen müssen, um getDisplayMedia()
vollständig zu unterstützen.
- Die angegebenen Optionen können nicht verwendet werden, um die dem Benutzer vorhandenen Auswahlmöglichkeiten zu begrenzen. Stattdessen müssen sie angewendet werden, nachdem der Benutzer eine Quelle gewählt hat, um Ausgaben zu erzeugen, die zu den Optionen passen.
- Die Erlaubnis zur Nutzung von
getDisplayMedia()
kann nicht für eine zukünftige Verwendung gespeichert werden. Der Benutzer muss jedes Mal um Erlaubnis gefragt werden. - Vorübergehende Benutzerinteraktion ist erforderlich. Der Benutzer muss mit der Seite oder einem UI-Element interagieren, damit diese Funktion funktioniert.
- Browser werden ermutigt, dem Benutzer eine Warnung über das Teilen von Bildschirmen oder Fenstern, die Browser enthalten, anzuzeigen, und genau darauf zu achten, welche anderen Inhalte eventuell erfasst und an andere Benutzer gezeigt werden.
Beispiele
Im untenstehenden Beispiel wird eine startCapture()
-Methode erstellt, die die
Bildschirmaufnahme mit einem Satz von Optionen startet, die durch den displayMediaOptions
-
Parameter angegeben sind.
const displayMediaOptions = {
video: {
displaySurface: "browser",
},
audio: {
suppressLocalAudioPlayback: false,
},
preferCurrentTab: false,
selfBrowserSurface: "exclude",
systemAudio: "include",
surfaceSwitching: "include",
monitorTypeSurfaces: "include",
};
async function startCapture(displayMediaOptions) {
let captureStream;
try {
captureStream =
await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
} catch (err) {
console.error(`Error: ${err}`);
}
return captureStream;
}
Dies verwendet await
, um asynchron auf die Auflösung von getDisplayMedia()
mit einem MediaStream
zu warten, der den angeforderten Anzeigebereichsinhalt entsprechend den angegebenen Optionen enthält. Der Stream wird dann zum Anrufer zurückgegeben
zur Verwendung, beispielsweise zum Hinzufügen zu einem WebRTC-Anruf mithilfe von RTCPeerConnection.addTrack()
, um den Videotrack aus dem Stream hinzuzufügen.
Hinweis:
Die Bildschirmfreigabesteuerungen-Demo bietet eine vollständige Implementierung, die es Ihnen ermöglicht, eine Bildschirmaufnahme mit Ihrer Wahl von getDisplayMedia()
-Einschränkungen und -Optionen zu erstellen.
Spezifikationen
Specification |
---|
Screen Capture # dom-mediadevices-getdisplaymedia |
Browser-Kompatibilität
Siehe auch
- Screen Capture API
- Verwendung der Screen Capture API
- Media Capture and Streams API
- WebRTC API
getUserMedia()
: Erfassen von Medien von einer Kamera und/oder einem Mikrofon