MediaSource:handle 属性
注意:此功能在Web Workers中可用。
MediaSource
接口的handle
只读属性返回一个MediaSourceHandle
对象,它是 MediaSource
的代理,可以从专用工作线程传输回主线程,并通过其HTMLMediaElement.srcObject
属性附加到媒体元素。
注意:handle
仅在专用工作线程内的MediaSource
实例上可见。
在专用工作线程内部创建的每个 MediaSource
对象都有其自己的唯一 MediaSourceHandle
。handle
getter 将始终返回与关联的专用工作线程 MediaSource
实例相关的 MediaSourceHandle
实例。如果句柄已使用postMessage()
传输到主线程,则工作线程中的句柄实例在技术上已分离,无法再次传输。
值
MediaSourceHandle
对象实例。
示例
可以在专用工作线程内部访问 handle
属性,然后将生成的MediaSourceHandle
对象通过postMessage()
调用传输到创建工作线程的线程(在本例中为主线程)。
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"
});
在主线程中,我们通过message
事件处理程序接收句柄,通过其HTMLMediaElement.srcObject
属性将其附加到<video>
,并play
视频。
js
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
注意:MediaSourceHandle
无法成功传输到共享工作线程或服务工作线程中或通过它们传输。
规范
规范 |
---|
媒体源扩展™ # dom-mediasource-handle |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。