Navigator: requestMediaKeySystemAccess() Methode
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2019 browserübergreifend verfügbar.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die requestMediaKeySystemAccess() Methode des Navigator Interfaces gibt ein Promise zurück, das ein MediaKeySystemAccess Objekt liefert, das verwendet werden kann, um auf ein bestimmtes Medienschlüsselsystem zuzugreifen, welches wiederum verwendet werden kann, um Schlüssel zur Entschlüsselung eines Medienstroms zu erstellen.
Diese Methode ist Teil der Encrypted Media Extensions API, die Unterstützung für verschlüsselte Medien und DRM-geschützte Videos im Web bietet.
Diese Methode kann sichtbare Effekte für den Benutzer haben, wie die Anfrage um Erlaubnis, auf eines oder mehrere Systemressourcen zuzugreifen. Berücksichtigen Sie dies bei der Entscheidung, wann requestMediaKeySystemAccess() aufgerufen werden soll; Sie möchten nicht, dass diese Anfragen zu ungünstigen Zeiten erfolgen. Als allgemeine Regel sollte diese Funktion nur aufgerufen werden, wenn es an der Zeit ist, ein MediaKeys Objekt zu erstellen und zu verwenden, indem die Methode createMediaKeys() des zurückgegebenen MediaKeySystemAccess Objekts aufgerufen wird.
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, das dem Objekt entspricht, das vonMediaKeySystemAccess.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, aber nicht beide!labelOptional-
Ein optionales Label für die Konfiguration, das standardmäßig
""ist. Dieses Label bleibt für Konfigurationen erhalten, die mitMediaKeySystemAccess.getConfigurationabgerufen werden. initDataTypes-
Ein Array von Strings, die die Datentypnamen der unterstützten Initialisierungsdatenformate angeben (standardmäßig ein leeres Array). Diese Namen sind Namen 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 Media 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 enthält, wiecodecs, diese ebenfalls enthalten sein müssen. encryptionScheme-
Das der Inhaltstyp zugeordnete Verschlüsselungsschema, wie
cenc,cbcs,cbcs-1-9. Dieser Wert sollte von einer Anwendung gesetzt werden (er standardmäßig aufnull, was bedeutet, dass jedes Verschlüsselungsschema verwendet werden kann). robustness-
Das mit dem Inhaltstyp assoziierte Robustheitsniveau. Der leere String zeigt an, dass jede Fähigkeit, den Inhaltstyp zu entschlüsseln und zu dekodieren, 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 "unterscheidungskräftige Kennungen" (oder unterscheidungskräftige permanente Kennungen) für irgendeine Operation verwenden darf, die mit einem aus dieser Konfiguration erstellten Objekt verbunden ist. 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 der Standardwert.
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 irgendeine andere Art von Zustand zu persistieren. Die Werte sind dieselben wie bei
distinctiveIdentifierund haben die gleiche Bedeutung:required,optional(Standard),not-allowed. Es dürfen nur "temporäre" Sitzungen erstellt werden, wenn persistenter Zustand nicht erlaubt ist. sessionTypes-
Ein Array von Strings, die die Sitzungstypen angeben, die unterstützt werden müssen. Zulässige Werte sind:
temporary-
Eine Sitzung, bei der die Lizenz, der/die Schlüssel und Aufzeichnungen oder Daten, die sich auf die Sitzung beziehen, nicht gespeichert werden. Die Anwendung muss eine solche Speicherung nicht verwalten. Implementierungen müssen diese Option unterstützen, und sie ist der Standard.
persistent-license-
Eine Sitzung, bei der die Lizenz (und möglicherweise andere Daten, die sich auf die Sitzung beziehen) gespeichert werden. Ein Aufzeichnungsbeweis der Lizenz und zugehöriger Schlüssel bleibt bestehen, auch wenn die Lizenz zerstört wird, was eine Bescheinigung gibt, dass die Lizenz und die darin enthaltenen Schlüssel vom Client nicht mehr verwendbar sind.
Rückgabewert
Ein Promise wird bereitgestellt, das ein MediaKeySystemAccess Objekt repräsentiert, das die Medien-Schlüsselsystemkonfiguration darstellt, die durch keySystem und supportedConfigurations beschrieben wird.
Ausnahmen
Im Falle eines Fehlers wird das zurückgegebene Promise mit einem DOMException zurückgewiesen, dessen Name anzeigt, welche Art von Fehler aufgetreten ist.
NotSupportedErrorDOMException-
Entweder wird das angegebene
keySystemnicht von der Plattform oder dem Browser unterstützt, oder keine der Konfigurationen, die vonsupportedConfigurationsangegeben werden, können erfüllt werden (wenn zum Beispiel keiner der incontentTypeangegebenencodecsverfügbar ist). SecurityErrorDOMException-
Die Nutzung dieser Funktion wurde durch
Permissions-Policy: encrypted-mediablockiert. TypeError-
Entweder ist
keySystemein leerer String oder dassupportedConfigurationsArray ist leer.
Beispiele
Das untenstehende Beispiel zeigt, wie Sie requestMediaKeySystemAccess() verwenden könnten, indem ein Schlüsselsystem und eine Konfiguration angegeben 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
| Spezifikation |
|---|
| Encrypted Media Extensions # navigator-extension-requestmediakeysystemaccess |