MediaSourceHandle
Ограниченное использование
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Примечание: Эта функция доступна в посвященных веб-воркерах.
Интерфейс MediaSourceHandle API Media Source Extensions является прокси для MediaSource, который можно передать из посвященного воркера обратно в основной поток и прикрепить к медиаэлементу через свойство HTMLMediaElement.srcObject. MediaSource объекты не передаваемы, так как являются целевыми объектами событий, поэтому необходимы MediaSourceHandle.
К нему можно получить доступ через свойство MediaSource.handle.
Каждый MediaSource объект, созданный внутри посвященного воркера, имеет свой уникальный MediaSourceHandle. Свойство MediaSource.handle всегда возвращает экземпляр MediaSourceHandle объекта, связанный с конкретным посвященным воркером MediaSource экземпляром. Если обработчик уже был передан в основной поток с помощью postMessage(), то экземпляр обработчика воркером считается отключенным и его нельзя передать повторно.
MediaSourceHandle является передаваемым объектом.
Свойства экземпляра
Нет.
Методы экземпляра
Нет.
Примеры
Свойство handle можно получить внутри посвященного воркера, а полученный объект MediaSourceHandle затем передается в поток, создавший воркер (в данном случае в основной поток) через вызов 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"
});
В основном потоке мы получаем обработчик через обработчик события message, подключаем его к <video> через свойство HTMLMediaElement.srcObject и запускаем видео с помощью play:
worker.addEventListener("message", (msg) => {
let mediaSourceHandle = msg.data.arg;
video.srcObject = mediaSourceHandle;
video.play();
});
Примечание: MediaSourceHandle не могут быть успешно переданы в или через общий воркер или сервис-воркер.
Спецификации
| Спецификация |
|---|
| Media Source Extensions™ # mediasourcehandle |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
MediaSourceHandle |
108 | 108 | Нет | 94 | 18 | 108 | Нет | 73 | 18 | 21.0 | 108 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaSourceHandle