MediaSource: handle-Eigenschaft
Hinweis: Dieses Feature ist nur verfügbar in Dedicated Web Workers.
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 beiMediaSource
-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:
// 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:
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
BCD tables only load in the browser