-
Notifications
You must be signed in to change notification settings - Fork 30
SourceBuffer.mode explanation
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)