MediaSource: метод endOfStream()
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Примечание: Эта функция доступна в Посвященных веб-рабочих потоках.
Метод endOfStream() интерфейса MediaSource сигнализирует о завершении потока.
Синтаксис
endOfStream() endOfStream(endOfStreamError)
Параметры
endOfStreamErrorНеобязательный-
Строка, представляющая ошибку, которая должна быть выброшена при достижении конца потока. Возможные значения:
network-
Прерывает воспроизведение и сигнализирует о возникновении сетевой ошибки. Это можно использовать для создания обработчика ошибок, связанного с потоками медиаданных. Например, у вас может быть функция, которая обрабатывает запросы на фрагменты медиаданных, отдельно от других сетевых запросов. Когда вы делаете запрос
fetch()на фрагмент медиаданных и получаете сетевую ошибку, вы можете вызватьendOfStream('network'), отобразить описательное сообщение в пользовательском интерфейсе и, возможно, повторить сетевой запрос сразу или дождаться восстановления сети (через какой-либо вид опроса). decode-
Прерывает воспроизведение и сигнализирует о возникновении ошибки декодирования. Это может использоваться для указания на то, что произошла ошибка разбора при получении данных медиаданных; возможно, данные повреждены или закодированы с помощью кодека, который браузер не знает, как декодировать.
Возвращаемое значение
None (undefined).
Исключения
-
InvalidStateErrorDOMException -
Выбрасывается, если
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);
});
}
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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