MediaSourceHandle
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Note: This feature is available in Dedicated Web Workers.
Giao diện MediaSourceHandle của Media Source Extensions API là một proxy cho MediaSource có thể được chuyển từ một dedicated worker trở lại luồng chính và gắn vào phần tử media thông qua thuộc tính HTMLMediaElement.srcObject. Các đối tượng MediaSource không thể chuyển được vì chúng là event target, do đó cần có MediaSourceHandle.
Nó có thể được truy cập thông qua thuộc tính MediaSource.handle.
Mỗi đối tượng MediaSource được tạo bên trong một dedicated worker có MediaSourceHandle riêng biệt của nó. Getter MediaSource.handle sẽ luôn trả về thể hiện MediaSourceHandle cụ thể cho thể hiện MediaSource của dedicated worker liên quan.
MediaSourceHandle là đối tượng có thể chuyển.
Thuộc tính phiên bản
Không có.
Phương thức phiên bản
Không có.
Ví dụ
Thuộc tính handle có thể được truy cập bên trong một dedicated worker và đối tượng MediaSourceHandle kết quả sau đó được chuyển qua luồng đã tạo worker thông qua lệnh gọi postMessage():
// 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"
});
Trong luồng chính, chúng ta nhận handle qua trình xử lý sự kiện message, gắn nó vào <video> thông qua thuộc tính HTMLMediaElement.srcObject và phát video:
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
Note:
MediaSourceHandle không thể được chuyển thành công vào hoặc qua shared worker hoặc service worker.
Thông số kỹ thuật
| Specification |
|---|
| Media Source Extensions™> # mediasourcehandle> |