MediaSource: handle-Eigenschaft

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Hinweis: Diese Funktion ist nur in Dedicated Web Workers verfügbar.

Die read-only Eigenschaft handle des MediaSource-Interfaces gibt ein MediaSourceHandle-Objekt zurück, einen Proxy für die MediaSource, der von einem dedizierten Worker an den Hauptthread übertragen und über die HTMLMediaElement.srcObject-Eigenschaft an ein Medien-Element angehängt werden kann.

Note: handle ist nur bei MediaSource-Instanzen innerhalb von dedizierten Workern sichtbar.

Jedes MediaSource-Objekt, das innerhalb eines dedizierten Workers erstellt wird, hat sein eigenes, einzigartiges MediaSourceHandle. Der handle-Getter gibt immer die MediaSourceHandle-Instanz zurück, die spezifisch für die zugehörige MediaSource-Instanz im dedizierten Worker ist. Wenn das Handle bereits mit postMessage() an den Hauptthread übertragen wurde, ist die Handle-Instanz im Worker technisch entkoppelt und kann nicht erneut übertragen werden.

Wert

Eine MediaSourceHandle-Objektinstanz.

Beispiele

Die handle-Eigenschaft kann innerhalb eines dedizierten Workers zugegriffen werden, und das resultierende MediaSourceHandle-Objekt wird dann über einen postMessage()-Aufruf an den Thread, der den Worker erstellt hat (in diesem Fall der Hauptthread), übertragen:

js
// Inside dedicated worker
let mediaSource = new MediaSource();
let handle = mediaSource.handle;
// Transfer the handle to the context that created the worker
postMessage({ arg: handle }, [handle]);

mediaSource.addEventListener("sourceopen", () => {
  // Await sourceopen on MediaSource before creating SourceBuffers
  // and populating them with fetched media — MediaSource won't
  // accept creation of SourceBuffers until it is attached to the
  // HTMLMediaElement and its readyState is "open"
});

Im Hauptthread empfangen wir das Handle über einen message-Event-Handler, hängen es an ein <video> über dessen HTMLMediaElement.srcObject-Eigenschaft und play das Video:

js
worker.addEventListener("message", (msg) => {
  let mediaSourceHandle = msg.data.arg;
  video.srcObject = mediaSourceHandle;
  video.play();
});

Note: MediaSourceHandle können nicht erfolgreich in oder über einen Shared Worker oder Service Worker übertragen werden.

Spezifikationen

Specification
Media Source Extensions™
# dom-mediasource-handle

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
handle

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support

Siehe auch