Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
requestMediaKeySystemAccess(keySystem, supportedConfigurations)

Parameter

keySystem

Ein String, der das Schlüsselsystem identifiziert. Zum Beispiel com.example.some-system oder org.w3.clearkey.

supportedConfigurations

Ein nicht-leeres Array von Objekten, die dem Objekt entsprechen, das durch MediaKeySystemAccess.getConfiguration zurückgegeben wird. Das erste Element mit einer erfüllbaren Konfiguration wird verwendet.

Jedes Objekt kann die folgenden Eigenschaften haben:

Hinweis: Entweder videoCapabilities oder audioCapabilities können leer sein, jedoch nicht beide!

label Optional

Ein optionales Label für die Konfiguration, das standardmäßig auf "" gesetzt ist. Dieses Label bleibt für Konfigurationen erhalten, die mit MediaKeySystemAccess.getConfiguration abgerufen 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, wie codecs, 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äßig null, 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 distinctiveIdentifier und 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.

NotSupportedError DOMException

Entweder wird das angegebene keySystem von der Plattform oder dem Browser nicht unterstützt, oder keine der durch supportedConfigurations angegebenen Konfigurationen kann erfüllt werden (wenn zum Beispiel keine der in contentType angegebenen codecs verfügbar sind).

SecurityError DOMException

Die Verwendung dieser Funktion wurde durch Permissions-Policy: encrypted-media blockiert.

TypeError

Entweder ist keySystem ein leerer String oder das supportedConfigurations Array ist leer.

Beispiele

Das folgende Beispiel zeigt, wie Sie requestMediaKeySystemAccess() verwenden könnten, indem ein Schlüsselsystem und eine Konfiguration spezifiziert werden.

js
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

Browser-Kompatibilität

Siehe auch