MediaDevices: enumerateDevices() Methode
Baseline
2023
Newly available
Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die enumerateDevices() Methode der MediaDevices Schnittstelle fordert eine Liste der derzeit verfügbaren Medien-Eingabe- und -Ausgabegeräte an, wie Mikrofone, Kameras, Headsets und so weiter. Die zurückgegebene Promise wird mit einem Array von MediaDeviceInfo Objekten aufgelöst, die die Geräte beschreiben.
Die zurückgegebene Liste wird alle Geräte auslassen, die durch die Dokumenten-Permission Policy blockiert sind: microphone, camera, speaker-selection (für Ausgabegeräte) und so weiter. Der Zugriff auf bestimmte nicht standardmäßige Geräte wird auch durch die Permissions API gesteuert und die Liste wird Geräte auslassen, für die der Benutzer keine ausdrückliche Erlaubnis erteilt hat.
Syntax
enumerateDevices()
Parameter
Keine.
Rückgabewert
Eine Promise, die mit einem Array von MediaDeviceInfo Objekten erfüllt wird. Jedes Objekt im Array beschreibt eines der verfügbaren Medien-Eingabe- und -Ausgabegeräte. Die Reihenfolge ist bedeutsam — die Standardaufnahmegeräte werden zuerst aufgelistet.
Neben den Standardgeräten sind nur Geräte verfügbar, für die eine Erlaubnis erteilt wurde.
Wenn das Mediengerät ein Eingabegerät ist, wird ein InputDeviceInfo Objekt zurückgegeben.
Wenn die Aufzählung fehlschlägt, wird die Promise abgelehnt.
Sicherheitsanforderungen
Der Zugriff auf die API unterliegt den folgenden Einschränkungen:
- Die Methode muss in einem sicheren Kontext aufgerufen werden.
- Das Dokument muss vollständig aktiv sein und seine Sichtbarkeit muss "sichtbar" sein.
Beispiele
Hier ist ein Beispiel für die Verwendung von enumerateDevices(). Es gibt eine Liste der Geräte-IDs aus, mit ihren Labels, falls verfügbar.
if (!navigator.mediaDevices?.enumerateDevices) {
console.log("enumerateDevices() not supported.");
} else {
// List cameras and microphones.
navigator.mediaDevices
.enumerateDevices()
.then((devices) => {
devices.forEach((device) => {
console.log(`${device.kind}: ${device.label} id = ${device.deviceId}`);
});
})
.catch((err) => {
console.error(`${err.name}: ${err.message}`);
});
}
Dies könnte ergeben:
videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8= audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM= audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
oder falls ein oder mehrere MediaStreams aktiv sind oder dauerhafte Erlaubnisse gewährt wurden:
videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8= audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM= audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
Spezifikationen
| Specification |
|---|
| Media Capture and Streams> # dom-mediadevices-enumeratedevices> |
Browser-Kompatibilität
Siehe auch
MediaDevices.getUserMedia- WebRTC - die Einführungsseite zur API
- Media Capture and Streams API - die API für die Medienstromobjekte
- Aufnehmen von Webcam-Fotos - ein Tutorial zur Verwendung von
getUserMedia()zum Aufnehmen von Fotos anstelle von Videos.