Navigator: requestMediaKeySystemAccess() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2019.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die requestMediaKeySystemAccess() Methode der Navigator Schnittstelle gibt ein Promise zurück, welches ein MediaKeySystemAccess Objekt liefert. Dieses kann verwendet werden, um auf ein bestimmtes Medien-Schlüsselsystem zuzugreifen, was wiederum benutzt werden kann, um Schlüssel zur Entschlüsselung eines Medienstreams zu erstellen.
Diese Methode ist Teil der Encrypted Media Extensions API, die Unterstützung für verschlüsselte Medien und DRM-geschütztes Video ins Web bringt.
Diese Methode kann sichtbare Effekte für den Nutzer haben, wie zum Beispiel das Erfragen von Erlaubnis um auf eine oder mehrere Systemressourcen zuzugreifen. Berücksichtigen Sie dies, wenn Sie entscheiden, wann requestMediaKeySystemAccess() aufgerufen werden soll; Sie möchten nicht, dass diese Anfragen zu unpassenden Zeiten stattfinden. Als allgemeine Regel sollte diese Funktion nur aufgerufen werden, wenn es Zeit ist, ein MediaKeys Objekt durch Aufruf der erzeugten MediaKeySystemAccess Objektmethode createMediaKeys() zu erstellen und zu verwenden.
Syntax
requestMediaKeySystemAccess(keySystem, supportedConfigurations)
Parameter
keySystem-
Ein String, der das Schlüsselsystem identifiziert. Zum Beispiel
com.example.some-systemoderorg.w3.clearkey. supportedConfigurations-
Ein nicht-leeres
Arrayvon Objekten, die dem Objekt entsprechen, das durchMediaKeySystemAccess.getConfigurationzurückgegeben wird. Das erste Element mit einer erfüllbaren Konfiguration wird verwendet.Jedes Objekt kann die folgenden Eigenschaften haben:
Hinweis: Entweder
videoCapabilitiesoderaudioCapabilitieskönnen leer sein, jedoch nicht beide!labelOptional-
Ein optionales Label für die Konfiguration, das standardmäßig auf
""gesetzt ist. Dieses Label bleibt für Konfigurationen erhalten, die mitMediaKeySystemAccess.getConfigurationabgerufen werden. initDataTypes-
Ein Array von Strings, die die Datentypnamen für die unterstützten Initialisierungsdatenformate angeben (standardmäßig ein leeres Array). Diese Namen sind wie
"cenc","keyids"und"webm", die im Encrypted Media Extensions Initialization Data Format Registry definiert sind. audioCapabilities-
Ein Array von unterstützten Audiofähigkeiten. Wenn das Array leer ist, unterstützt der Inhaltstyp keine Audiofähigkeiten.
Jedes Objekt im Array hat die folgenden Eigenschaften:
contentType-
Ein String, der den Medien-MIME-Typ der Medienressource angibt, wie
"audio/mp4;codecs=\"mp4a.40.2\". Beachten Sie, dass der leere String ungültig ist und dass, wenn die MIME-Typ-Definition Parameter beinhaltet, wiecodecs, diese ebenfalls einbezogen werden müssen. encryptionScheme-
Das mit dem Inhaltstyp assoziierte Verschlüsselungsschema, wie
cenc,cbcs,cbcs-1-9. Dieser Wert sollte von einer Anwendung gesetzt werden (er ist standardmäßignull, was darauf hinweist, dass jedes Verschlüsselungsschema verwendet werden kann). robustness-
Das Robustheitsniveau, das mit dem Inhaltstyp assoziiert ist. Der leere String zeigt an, dass jede Fähigkeit zur Entschlüsselung und Dekodierung des Inhaltstyps akzeptabel ist.
videoCapabilities-
Ein Array von unterstützten Videofähigkeiten. Die Objekte im Array haben die gleiche Form wie die in
audioCapabilities. distinctiveIdentifier-
Ein String, der angibt, ob die Implementierung "unverwechselbare Identifikatoren" (oder unverwechselbare dauerhafte Identifikatoren) für Vorgänge verwenden darf, die mit einem aus dieser Konfiguration erstellten Objekt verbunden sind. Die erlaubten Werte sind:
required-
Das zurückgegebene Objekt muss diese Funktion unterstützen.
optional-
Das zurückgegebene Objekt kann diese Funktion unterstützen. Dies ist die Standardeinstellung.
not-allowed-
Das zurückgegebene Objekt darf diese Funktion nicht unterstützen oder verwenden.
persistentState-
Ein String, der angibt, ob das zurückgegebene Objekt in der Lage sein muss, Sitzungsdaten oder einen anderen Zustand zu speichern. Die Werte sind dieselben wie für
distinctiveIdentifierund haben die gleiche Bedeutung:required,optional(Standard),not-allowed. Nur "temporäre" Sitzungen dürfen erstellt werden, wenn der dauerhafte Zustand nicht erlaubt ist. sessionTypes-
Ein Array von Strings, das die Sitzungstypen angibt, die unterstützt werden müssen. Erlaubte Werte sind:
temporary-
Eine Sitzung, für die die Lizenz, die Schlüssel und Aufzeichnungen der oder Daten über die Sitzung nicht gespeichert werden. Die Anwendung muss eine solche Speicherung nicht verwalten. Implementierungen müssen diese Option unterstützen, und es ist die Standardeinstellung.
persistent-license-
Eine Sitzung, für die die Lizenz (und möglicherweise andere datenbezogene Informationen zur Sitzung) gespeichert werden. Ein Nachweis über die Lizenz und die damit verbundenen Schlüssel bleibt bestehen, auch wenn die Lizenz zerstört wird, was bestätigt, dass die Lizenz und die in ihr enthaltenen Schlüssel vom Client nicht mehr verwendbar sind.
Rückgabewert
Ein Promise das mit einem MediaKeySystemAccess Objekt erfüllt wird, das die durch keySystem und supportedConfigurations beschriebene Medien-Schlüsselsystemkonfiguration darstellt.
Ausnahmen
Im Falle eines Fehlers wird das zurückgegebene Promise mit einer DOMException abgelehnt, deren Name angibt, welche Art von Fehler aufgetreten ist.
NotSupportedErrorDOMException-
Entweder wird das angegebene
keySystemvon der Plattform oder dem Browser nicht unterstützt, oder keine der durchsupportedConfigurationsangegebenen Konfigurationen kann erfüllt werden (wenn zum Beispiel keine der incontentTypeangegebenencodecsverfügbar sind). SecurityErrorDOMException-
Die Verwendung dieser Funktion wurde durch
Permissions-Policy: encrypted-mediablockiert. TypeError-
Entweder ist
keySystemein leerer String oder dassupportedConfigurationsArray ist leer.
Beispiele
Das folgende Beispiel zeigt, wie Sie requestMediaKeySystemAccess() verwenden könnten, indem ein Schlüsselsystem und eine Konfiguration spezifiziert werden.
const clearKeyOptions = [
{
initDataTypes: ["keyids", "webm"],
audioCapabilities: [
{ contentType: 'audio/webm; codecs="opus"' },
{ contentType: 'audio/webm; codecs="vorbis"' },
],
videoCapabilities: [
{ contentType: 'video/webm; codecs="vp9"' },
{ contentType: 'video/webm; codecs="vp8"' },
],
},
];
navigator
.requestMediaKeySystemAccess("org.w3.clearkey", clearKeyOptions)
.then((keySystemAccess) => {
/* use the access to get create keys */
});
Spezifikationen
| Specification |
|---|
| Encrypted Media Extensions> # navigator-extension-requestmediakeysystemaccess> |