2015-10-14 2 views
1

Что касается поведения адаптивного потокового проигрывателя (конкретно меня интересуют HLS и DASH), как часто он должен перезагружать плейлист? Это указано или до реализации игрока?Адаптивный потоковый интервал обновления плейлиста плеера

Когда он перезагружает плейлист, выполняется ли это только для так называемого варианта воспроизведения, или мастер всегда перезагружается?

Разнообразно ли это для живого контента и для контента по запросу?

ответ

4

В случае MPEG-DASH MPD указывает атрибут minimumUpdatePeriod, который сигнализирует клиенту о наименьшем периоде между потенциальными изменениями MPD. Это помогает клиентскому приложению определять частоту, с которой она должна обновлять/повторно загружать MPD. Если, например, minimumUpdatePeriod составляет 10 секунд, вы можете обновлять/перезагружать MPD каждые 10 секунд, и вы должны быть в порядке.

HLS не содержит определенного атрибута для этого (насколько мне известно -> изменений проекта), но вы можете обновить M3U8 на основе продолжительности сегмента, например, если в списке воспроизведения есть сегменты с 10-ю, вы должны обновить каждые 10 секунд (каждые 10 секунд новый сегмент может быть доступен в случае живого потока). Если продолжительность сегмента варьируется, вы можете рассчитать среднее значение на основе сегментов, которые вы уже загрузили и обновили на этом интервале.

Вы также можете взглянуть на существующие реализации, такие как JWPlayer или bitdash, которые поддерживают HLS и DASH. Если вы хотите генерировать HLS и DASH-контент для тестирования, вы можете использовать ffmpeg & mp4box или такие услуги, как bitcodin.

+0

Таким образом, для прямого потока в HLS наименьший интервал между обновлениями плейлистов будет длительностью сегмента, если я правильно понял. Но действительно ли это делается так, обновляясь до запроса нового фрагмента, существующим игрокам или этот короткий период не требуется, когда плейлист содержит несколько сегментов? – Silvia

+0

Я думаю, что аэргисталь ссылался на правильный раздел в черновике, который описывает это. Однако то, что я видел у других игроков, заключается в том, что они просто обновляются на основе продолжительности сегмента (в среднем), и если игрок ближе к живому краю, также появляется вероятность увеличения частоты, например, некоторые игроки обновляют M3U8, затем каждые 500 мс. Я думаю, что flashhls (https://github.com/mangui/flashls) делает это так. –

2

Для HLS см. General Client Responsabilities в черновике. Обратите внимание, что это последняя версия, если вам нужна более старая проверка других версий.

Некоторые соответствующие выдержки:

Вы только перезагрузить LIVE и EVENT без EXT-X-ENDLISTмедиа плейлиста (так что не мастер перегрузочной)

Клиент должен периодически перезагружать файл медиа Playlist, чтобы узнать какие средства массовой информации в настоящее время доступен , если он не содержит тег EXT-X-PLAYLIST-TYPE со значением VOD или значение EVENT, а также тег EXT-X-ENDLIST .

Перезарядка:

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

Если клиент загружает файл списка воспроизведения и обнаруживает, что он не изменил то он должен ждать в течение один-два раза цели длительности перед повтором.