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 schreibgeschützte handle
-Eigenschaft des MediaSource
-Interfaces gibt ein MediaSourceHandle
-Objekt zurück, einen Proxy für das MediaSource
, das von einem Dedicated Worker zurück zum Haupt-Thread übertragen und über seine HTMLMediaElement.srcObject
-Eigenschaft an ein Medien-Element angehängt werden kann.
Hinweis:>handle
ist nur bei MediaSource
-Instanzen innerhalb von Dedicated Workern sichtbar.
Jedes MediaSource
-Objekt, das innerhalb eines Dedicated Workers erstellt wird, hat sein eigenes, eindeutiges MediaSourceHandle
. Der handle
-Getter gibt immer die MediaSourceHandle
-Instanz zurück, die spezifisch für die zugehörige Dedicated Worker MediaSource
-Instanz ist. Wenn das Handle bereits unter Verwendung von postMessage()
an den Haupt-Thread übertragen wurde, ist die Handle-Instanz im Worker technisch abgetrennt und kann nicht erneut übertragen werden.
Wert
Eine MediaSourceHandle
-Objektinstanz.
Beispiele
Die handle
-Eigenschaft kann innerhalb eines Dedicated Workers abgerufen werden, und das resultierende MediaSourceHandle
-Objekt wird dann über einen postMessage()
-Aufruf an den Thread übertragen, der den Worker erstellt hat (in diesem Fall der Haupt-Thread):
// 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 Haupt-Thread empfangen wir das Handle über einen message
-Ereignishandler, hängen es über seine HTMLMediaElement.srcObject
-Eigenschaft an ein <video>
und play
das Video:
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
Hinweis:>MediaSourceHandle
s können nicht erfolgreich in oder über einen Shared Worker oder Service Worker übertragen werden.
Spezifikationen
Specification |
---|
Media Source Extensions™ # dom-mediasource-handle |