В случае MPEG-DASH MPD указывает атрибут minimumUpdatePeriod, который сигнализирует клиенту о наименьшем периоде между потенциальными изменениями MPD. Это помогает клиентскому приложению определять частоту, с которой она должна обновлять/повторно загружать MPD. Если, например, minimumUpdatePeriod составляет 10 секунд, вы можете обновлять/перезагружать MPD каждые 10 секунд, и вы должны быть в порядке.
HLS не содержит определенного атрибута для этого (насколько мне известно -> изменений проекта), но вы можете обновить M3U8 на основе продолжительности сегмента, например, если в списке воспроизведения есть сегменты с 10-ю, вы должны обновить каждые 10 секунд (каждые 10 секунд новый сегмент может быть доступен в случае живого потока). Если продолжительность сегмента варьируется, вы можете рассчитать среднее значение на основе сегментов, которые вы уже загрузили и обновили на этом интервале.
Вы также можете взглянуть на существующие реализации, такие как JWPlayer или bitdash, которые поддерживают HLS и DASH. Если вы хотите генерировать HLS и DASH-контент для тестирования, вы можете использовать ffmpeg & mp4box или такие услуги, как bitcodin.
Таким образом, для прямого потока в HLS наименьший интервал между обновлениями плейлистов будет длительностью сегмента, если я правильно понял. Но действительно ли это делается так, обновляясь до запроса нового фрагмента, существующим игрокам или этот короткий период не требуется, когда плейлист содержит несколько сегментов? – Silvia
Я думаю, что аэргисталь ссылался на правильный раздел в черновике, который описывает это. Однако то, что я видел у других игроков, заключается в том, что они просто обновляются на основе продолжительности сегмента (в среднем), и если игрок ближе к живому краю, также появляется вероятность увеличения частоты, например, некоторые игроки обновляют M3U8, затем каждые 500 мс. Я думаю, что flashhls (https://github.com/mangui/flashls) делает это так. –