Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
MediaSourceHandle
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Hinweis: Diese Funktion ist inDedicated Web Workers verfügbar.
DasMediaSourceHandle-Interface derMedia Source Extensions API dient als Proxy für einMediaSource, das von einem dedizierten Worker zurück in den Haupt-Thread übertragen werden kann und über seineHTMLMediaElement.srcObject-Eigenschaft an ein Medien-Element angehängt wird.MediaSource-Objekte sind nicht übertragbar, da sie Ereignisziele sind, daher sindMediaSourceHandles erforderlich.
Es kann über dieMediaSource.handle-Eigenschaft aufgerufen werden.
JedesMediaSource-Objekt, das innerhalb eines dedizierten Workers erstellt wird, hat sein eigenesMediaSourceHandle. DerMediaSource.handle-Getter gibt immer dieMediaSourceHandle-Instanz zurück, die speziell mit der zugehörigen dedizierten Worker-MediaSource-Instanz verbunden ist. Wenn der Handle bereits mitpostMessage() an den Haupt-Thread übertragen wurde, ist die Handle-Instanz im Worker technisch abgetrennt und kann nicht erneut übertragen werden.
MediaSourceHandle ist einübertragbares Objekt.
In diesem Artikel
Instanz-Eigenschaften
Keine.
Instanz-Methoden
Keine.
Beispiele
Diehandle-Eigenschaft kann innerhalb eines dedizierten Workers aufgerufen werden, und das resultierendeMediaSourceHandle-Objekt wird dann über einenpostMessage()-Aufruf an den Thread übertragen, der den Worker erstellt hat (in diesem Fall der Haupt-Thread):
// Inside dedicated workerlet mediaSource = new MediaSource();let handle = mediaSource.handle;// Transfer the handle to the context that created the workerpostMessage({ 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 den Handle über einenmessage-Ereignishandler, verknüpfen ihn über seineHTMLMediaElement.srcObject-Eigenschaft mit einem<video> undplay das Video:
worker.addEventListener("message", (msg) => { let mediaSourceHandle = msg.data.arg; video.srcObject = mediaSourceHandle; video.play();});Hinweis:>MediaSourceHandles können nicht erfolgreich in oder über einen Shared Worker oder Service Worker übertragen werden.
Spezifikationen
| Specification |
|---|
| Media Source Extensions™> # mediasourcehandle> |