Spec-Zone.ru › Web APIs

MediaSource: метод endOfStream()

Ограниченная доступность

Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Посвященных веб-рабочих потоках.

Метод endOfStream() интерфейса MediaSource сигнализирует о завершении потока.

Синтаксис

endOfStream()
endOfStream(endOfStreamError)

Параметры

endOfStreamError Необязательный

Строка, представляющая ошибку, которая должна быть выброшена при достижении конца потока. Возможные значения:

network

Прерывает воспроизведение и сигнализирует о возникновении сетевой ошибки. Это можно использовать для создания обработчика ошибок, связанного с потоками медиаданных. Например, у вас может быть функция, которая обрабатывает запросы на фрагменты медиаданных, отдельно от других сетевых запросов. Когда вы делаете запрос fetch() на фрагмент медиаданных и получаете сетевую ошибку, вы можете вызвать endOfStream('network'), отобразить описательное сообщение в пользовательском интерфейсе и, возможно, повторить сетевой запрос сразу или дождаться восстановления сети (через какой-либо вид опроса).

decode

Прерывает воспроизведение и сигнализирует о возникновении ошибки декодирования. Это может использоваться для указания на то, что произошла ошибка разбора при получении данных медиаданных; возможно, данные повреждены или закодированы с помощью кодека, который браузер не знает, как декодировать.

Возвращаемое значение

None (undefined).

Исключения

InvalidStateError DOMException

Выбрасывается, если MediaSource.readyState не равно open, или один или несколько объектов SourceBuffer в MediaSource.sourceBuffers обновляются (т. е. их свойство SourceBuffer.updating равно true).

Примеры

Следующий фрагмент кода взят из примера, написанного Ником Дезонье (просмотреть полную демонстрацию, или скачать исходный код для дальнейшего изучения). Функция getMediaSource(), которая не определена здесь, возвращает MediaSource.

const assetURL = "frag_bunny.mp4";
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';

let mediaSource;

if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
  mediaSource = getMediaSource();
  console.log(mediaSource.readyState); // closed
  video.src = URL.createObjectURL(mediaSource);
  mediaSource.addEventListener("sourceopen", sourceOpen);
} else {
  console.error("Unsupported MIME type or codec: ", mimeCodec);
}

function sourceOpen() {
  console.log(this.readyState); // open
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, (buf) => {
    sourceBuffer.addEventListener("updateend", () => {
      mediaSource.endOfStream();
      video.play();
      console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
}

Спецификации

Спецификация
Media Source Extensions™
# dom-mediasource-endofstream

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
endOfStream 23 12 42 15 8 25 41 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
1.5 4.4.3

См. также

  • SourceBuffer
  • SourceBufferList

© 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/MediaSource/endOfStream

Spec-Zone.ru

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