Spec-Zone.ru › Web APIs

SourceBuffer

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

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

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

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

Интерфейс SourceBuffer представляет собой фрагмент медиаданных, которые будут переданы в HTMLMediaElement и воспроизведены через объект MediaSource. Он может состоять из одного или нескольких медиасегментов.

EventTarget SourceBuffer

Свойства экземпляра

SourceBuffer.appendWindowEnd

Управляет меткой времени конца окна добавления.

SourceBuffer.appendWindowStart

Управляет меткой времени начала окна добавления. Это диапазон меток времени, который может использоваться для фильтрации медиаданных, добавляемых к SourceBuffer. Кодированные кадры медиа с метками времени в этом диапазоне будут добавлены, а те, что вне диапазона, будут отфильтрованы.

SourceBuffer.audioTracks Только для чтения

Список аудиодорожек, содержащихся в настоящее время в SourceBuffer.

SourceBuffer.buffered Только для чтения

Возвращает диапазоны времени, которые в настоящее время буферизованы в SourceBuffer.

SourceBuffer.mode

Управляет тем, как обрабатывается порядок медиасегментов в SourceBuffer, в зависимости от того, могут ли они быть добавлены в любом порядке или должны сохраняться в строгой последовательности.

SourceBuffer.textTracks Только для чтения Экспериментальный

Список текстовых дорожек, в настоящее время содержащихся в SourceBuffer.

SourceBuffer.timestampOffset

Управляет смещением, применяемым к меткам времени внутри медиасегментов, которые впоследствии добавляются к SourceBuffer.

SourceBuffer.updating Только для чтения

Булевое значение, указывающее, обновляется ли в настоящее время SourceBuffer — то есть, выполняется ли в настоящее время операция SourceBuffer.appendBuffer() или SourceBuffer.remove().

SourceBuffer.videoTracks Только для чтения

Список видеодорожек, содержащихся в настоящее время в SourceBuffer.

Методы экземпляра

Наследует методы от своего родительского интерфейса, EventTarget.

SourceBuffer.abort()

Прерывает текущий сегмент и сбрасывает парсер сегментов.

SourceBuffer.appendBuffer()

Добавляет данные медиасегмента из объекта ArrayBuffer, TypedArray или DataView в SourceBuffer.

SourceBuffer.appendBufferAsync() Нестандартный Экспериментальный

Запускает процесс асинхронного добавления указанного буфера в SourceBuffer. Возвращает Promise, который выполняется, как только буфер будет добавлен.

SourceBuffer.changeType()

Изменяет MIME-тип, который будущие вызовы appendBuffer() будут ожидать от новых данных.

SourceBuffer.remove()

Удаляет медиасегменты в определенном диапазоне времени из SourceBuffer.

SourceBuffer.removeAsync() Нестандартный Экспериментальный

Запускает процесс асинхронного удаления медиасегментов в указанном диапазоне из SourceBuffer. Возвращает Promise, который выполняется после удаления всех соответствующих сегментов.

События

abort

Срабатывает всякий раз, когда SourceBuffer.appendBuffer() завершается вызовом SourceBuffer.abort(). SourceBuffer.updating изменяется с true на false.

error

Срабатывает всякий раз, когда во время SourceBuffer.appendBuffer() возникает ошибка. SourceBuffer.updating изменяется с true на false.

update

Срабатывает всякий раз, когда SourceBuffer.appendBuffer() или SourceBuffer.remove() завершается. SourceBuffer.updating изменяется с true на false. Это событие срабатывает до updateend.

updateend

Срабатывает после завершения SourceBuffer.appendBuffer() или SourceBuffer.remove(). Это событие срабатывает после update.

updatestart

Срабатывает всякий раз, когда значение SourceBuffer.updating изменяется с false на true.

Примеры

Загрузка видео по частям

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

Полный код вы можете посмотреть на https://github.com/mdn/dom-examples/tree/main/sourcebuffer, а демо-версию попробовать на https://mdn.github.io/dom-examples/sourcebuffer/.

const video = document.querySelector("video");

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

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

async function sourceOpen() {
  console.log(this.readyState); // open
  const mediaSource = this;
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  const response = await fetch(assetURL);
  const buffer = await response.arrayBuffer();
  sourceBuffer.addEventListener("updateend", () => {
    mediaSource.endOfStream();
    video.play();
    console.log(mediaSource.readyState); // ended
  });
  sourceBuffer.appendBuffer(buffer);
}

const load = document.querySelector("#load");
load.addEventListener("click", loadVideo);

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

Спецификация
Media Source Extensions™
# sourcebuffer

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
SourceBuffer 3123–31 12 42 1815–18 8 3125–31 42 1814–18
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.02.0–3.0 4.4.34.4–4.4.3
abort 23 12 42 15 8 25 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
2.0 4.4.3
abort_event 53
31–53Свойство обработчика событий onabort не поддерживается.
17
12–17Свойство обработчика событий onabort не поддерживается.
42 40
18–40Свойство обработчика событий onabort не поддерживается.
10.1
8–10.1Свойство обработчика событий onabort не поддерживается.
53
31–53Свойство обработчика событий onabort не поддерживается.
42 41
18–41Свойство обработчика событий onabort не поддерживается.
13Доступно в Mobile Safari на iPad, но не на iPhone.
6.0
2.0–6.0Свойство обработчика событий onabort не поддерживается.
53
4.4.3–53Свойство обработчика событий onabort не поддерживается.
appendBuffer 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
appendBufferAsync Нет Нет 62 Нет Нет Нет Нет Нет Нет Нет Нет
appendWindowEnd 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
appendWindowStart 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
audioTracks 70 7912–79 Нет 57 8 70 Нет Нет
13Доступно в Mobile Safari на iPad, но не на iPhone.
Нет Нет
buffered 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
changeType 70 79 63 57 12.1 70 63 49
13Доступно в Mobile Safari на iPad, но не на iPhone.
10.0 70
error_event 53
31–53Свойство обработчика событий onerror не поддерживается.
17
12–17Свойство обработчика событий onerror не поддерживается.
42 40
18–40Свойство обработчика событий onerror не поддерживается.
10.1
8–10.1Свойство обработчика событий onerror не поддерживается.
53
31–53Свойство обработчика событий onerror не поддерживается.
42 41
18–41Свойство обработчика событий onerror не поддерживается.
13Доступно в Mobile Safari на iPad, но не на iPhone.
6.0
2.0–6.0Свойство обработчика событий onerror не поддерживается.
53
4.4.3–53Свойство обработчика событий onerror не поддерживается.
mode 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
remove 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
removeAsync Нет Нет 62 Нет Нет Нет Нет Нет Нет Нет Нет
textTracks Нет Нет Нет Нет 8 Нет Нет Нет
13Доступно в Mobile Safari на iPad, но не на iPhone.
Нет Нет
timestampOffset 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
update_event 53
31–53Свойство обработчика событий onupdate не поддерживается.
17
12–17Свойство обработчика событий onupdate не поддерживается.
42 40
18–40Свойство обработчика событий onupdate не поддерживается.
10.1
8–10.1Свойство обработчика событий onupdate не поддерживается.
53
31–53Свойство обработчика событий onupdate не поддерживается.
42 41
18–41Свойство обработчика событий onupdate не поддерживается.
13Доступно в Mobile Safari на iPad, но не на iPhone.
6.0
2.0–6.0Свойство обработчика событий onupdate не поддерживается.
53
4.4.3–53Свойство обработчика событий onupdate не поддерживается.
updateend_event 53
31–53Свойство обработчика событий onupdateend не поддерживается.
17
12–17Свойство обработчика событий onupdateend не поддерживается.
42 40
18–40Свойство обработчика событий onupdateend не поддерживается.
10.1
8–10.1Свойство обработчика событий onupdateend не поддерживается.
53
31–53Свойство обработчика событий onupdateend не поддерживается.
42 41
18–41Свойство обработчика событий onupdateend не поддерживается.
13Доступно в Mobile Safari на iPad, но не на iPhone.
6.0
2.0–6.0Свойство обработчика событий onupdateend не поддерживается.
53
4.4.3–53Свойство обработчика событий onupdateend не поддерживается.
updatestart_event 53
31–53Свойство обработчика событий onupdatestart не поддерживается.
17
12–17Свойство обработчика событий onupdatestart не поддерживается.
42 40
18–40Свойство обработчика событий onupdatestart не поддерживается.
10.1
8–10.1Свойство обработчика событий onupdatestart не поддерживается.
53
31–53Свойство обработчика событий onupdatestart не поддерживается.
42 41
18–41Свойство обработчика событий onupdatestart не поддерживается.
13Доступно в Mobile Safari на iPad, но не на iPhone.
6.0
2.0–6.0Свойство обработчика событий onupdatestart не поддерживается.
53
4.4.3–53Свойство обработчика событий onupdatestart не поддерживается.
updating 23 12 42 15 8 33 42 14
13Доступно в Mobile Safari на iPad, но не на iPhone.
3.0 4.4.3
videoTracks 70 7912–79 Нет 57 8 70 Нет Нет
13Доступно в Mobile Safari на iPad, но не на iPhone.
Нет Нет

См. также

  • MediaSource
  • 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/SourceBuffer

Spec-Zone.ru

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