Spec-Zone.ru › Web APIs

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

См. также

  • Демонстрация MSE в воркерах от Мэтта Воленетца
  • API Media Source Extensions
  • MediaSource
  • SourceBuffer

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API