MediaSource: метод addSourceBuffer()
Ограниченная доступность
Эта функция не относится к Baseline, поскольку она не работает в некоторых из самых широко используемых браузеров.
Примечание: Эта функция доступна в посвящённых веб-рабочих потоках.
Метод addSourceBuffer() интерфейса MediaSource создаёт новый буфер SourceBuffer заданного типа MIME и добавляет его в список буферов sourceBuffers объекта MediaSource. Новый SourceBuffer также возвращается.
Синтаксис
addSourceBuffer(mimeType)
Параметры
mimeType-
Строка, определяющая тип MIME буфера
SourceBuffer, который нужно создать и добавить вMediaSource.
Возвращаемое значение
Объект SourceBuffer, представляющий новый буфер источника, который был создан и добавлен к источнику медиа.
Исключения
-
InvalidAccessErrorDOMException -
Выбрасывается, если значение, указанное для
mimeType, является пустой строкой вместо допустимого типа MIME. -
InvalidStateErrorDOMException -
Выбрасывается, если
MediaSourceне находится в состоянии"open"readyState. -
NotSupportedErrorDOMException -
Выбрасывается, если указанный
mimeTypeне поддерживается агентом пользователя или несовместим с типами MIME других объектовSourceBuffer, которые уже включены в списокsourceBuffersисточника медиа. -
QuotaExceededErrorDOMException -
Выбрасывается, если агент пользователя не может обработать больше объектов
SourceBuffer, или создание новогоSourceBufferс заданнымmimeTypeприведёт к неподдерживаемой конфигурацииSourceBuffer.
Примеры
Следующий фрагмент взят из примера, написанного Ником Дешольнером (посмотреть полную демонстрацию, или скачать исходный код для дальнейшего изучения). Функция 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"';
const mediaSource = getMediaSource();
if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
console.log(mediaSource.readyState); // closed
mediaSource.addEventListener("sourceopen", sourceOpen);
video.src = URL.createObjectURL(mediaSource);
} 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 | |
addSourceBuffer |
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/addSourceBuffer