Skip to content

SourceBuffer.mode explanation

Dmitry T edited this page Jul 9, 2018 · 1 revision

Media Source API: Automatically Ensure Seamless Playback of Media Segments in Append Order

Порядок проигрывания

Chrome 50 добавляет дополнительную поддержку в SourceBuffer атрибуда mode, позволяя вам указать какие медия сегменты будут проиграны непрерывно(continuously), в соответсвии с тем как они были дописаны(appended), не важно имели ли сегменты начальные, [не последовательные/с разрывами] (discontinuius) метки времени(timestamps).

Используйте mode атрибут, чтобы указать порядок воспроизведения медия сегментов. Атрибут имеет два значения:

  • segments: Метки времени(timestamps) каждого сегмента(которые могли бы быть изменены атрибутом, методом timestampOffset) определяют порядок воспроизведения, не важен порядок в котором сегменты были записаны.
  • sequence: Расстановка(order) сегментов буферезированных(buffered) в (media timeline) определяется с помощью порядка/последовательности в котором сегменты были записаны в SourceBuffer

Если медия сегменты имеют временные метки(timestamps) выдранные(parsed) из потока байтов(byte stream data) когда они дописывались в SourceBuffer, Свойство SourceBuffer’s mode будет установлено в segments. В обратном случае mode будет установлено в sequence. Обратите внимание, что временные метки(timestamps) не опционально: они должны быть там для большинства типов потоков и не могу быть там для других: внтренние временные метки(inband timestamps) естественны для типов потоков которые содержат их.

Задание параметра mode не обязательное. Для потоков которые не включают временные метки(audio/mpeg и audio/aac) mode может быть изменено только с segments в sequence: выбросит ошибку если вы попытаетесь изменить mode из sequence в segments. Для потоков, которые имеют временные метки(timestamps), это возможно переключать м/у segments в sequence, хотя на практике это будет возможно производить поведение которое было не желаемо, сложно для ронимания или сложно предсказуемо.

Для всех типов потоков, вы можете изменять значение с segments в sequence. Это значит segments будут проиграны в порядке где они были дописаны и новые временные метки(timestamps) генерируются соответственно(accordingly):

sourceBuffer.mode = ‘sequence’

Возможность(Being able) задать значение mode в sequence гарантирует непрерывное(continuous) воспоризведение, не важно даже если временные метки медия сегмента(media segment timestamps) были прерыны, не друг за другом(discontinuous) - пример, если были проблемы с video muxing или если(по любым причинам) (не упорядаченные/ прерывные/ не последовательные)(discontinuos) сегменты были дописаны. Это возможно для [применения/приложения](an app) для [заливать](to polyfill) с timestampOffset для обеспечения непрерывного(continuous) воспроизведения, елси доступны корректные метаданные потока, но sequence mode делает процесс проще и менее ошибка-склонные(error prove)

Clone this wiki locally