-
Notifications
You must be signed in to change notification settings - Fork 31
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)