...
2. Если HLS нарезка потока останавливается при помощи REST запроса /hls/terminate, и есть активные HLS подписчики, то нарезка будет перезапущена. При этом активные HLS подписчики должны повторно подключиться к потоку.
Поддержка HLS ABR
Устаревшая реализация в сборках 5.2.484 - 5.2.582
В сборке 5.2.484 добавлена поддержка HLS ABR плейлистов. Использование этой возможности включается при помощи настройки
...
Code Block | ||||
---|---|---|---|---|
| ||||
curl -s http://localhost:8082/test/test.m3u8 sleep 1 curl -s http://localhost:8082/test-240p/test-240p.m3u8 sleep 1 curl -s http://localhost:8082/test-480p/test-480p.m3u8 sleep 1 curl -s http://localhost:8082/test-720p/test-720p.m3u8 sleep 1 |
Актуальная реализация в сборках 5.2.585 и новее
В сборке 5.2.585 реализация HLS ABR существенно изменена. Как и прежде, HLS ABR может использоваться только в CDN, при этом все транскодированные потоки для вариантов в ABR манифесте Edge забирает одновременно в пределах одной медиасессии, чтобы варианты одного потока были синхронизированы друг с другом. Это требует совместной настройки Transcoder и Edge узлов и накладывает ряд ограничений. Рассмотрим их ниже.
Настройки Transcoder узлов
Для того, чтобы все варианты одного потока были синхронизированы между собой, на Transcoder узлах должно быть включено выравнивание кодирования
Code Block | ||
---|---|---|
| ||
transcoder_align_encoders=true |
Кроме того, должен быть включен FPS фильтр
Code Block | ||
---|---|---|
| ||
video_filter_enable_fps=true
video_filter_fps=25 |
Ключевые фреймы в вариантах потока должны быть синхронизированы. Например, при 25 кадрах в секунду будем отправлять ключевой фрейм каждые 2 секунды
Code Block | ||
---|---|---|
| ||
video_filter_fps_gop_synchronization=50 |
Настойки HLS Edge узлов
На HLS Edge узлах необходимо отключить использование прелоадера и транскодирование потоков
Code Block | ||
---|---|---|
| ||
hls_preloader_enabled=false
hls_player_width=0
hls_player_height=0 |
Необходимо также настроить профили транскодирования в файле cdn_profiles.yml
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
-240p:
audio:
codec : mpeg4-generic
rate : 48000
video:
height : 240
bitrate : 300
gop : 50
codec : h264
-480p:
video:
height : 480
bitrate : 600
gop : 50
codec : h264
-720p:
video:
height : 720
bitrate : 1000
gop : 50
codec : h264 |
Обратите внимание, что параметры звука можно указать для первого профиля, т.к. для всех профилей эти параметры должны быть идентичными и будут применены по первому из профилей.
Затем необходимо включить HLS ABR
Code Block | ||
---|---|---|
| ||
hls_abr_enabled=true |
Использование
Клиент должен запрашивать плейлист так же, как и в обычном режиме
Code Block | ||
---|---|---|
| ||
https://server:8445/test_0/test_0.m3u8 |
Плейлист содержит ссылки на плейлисты вариантов потока, между которыми клиент может переключаться
Code Block | ||
---|---|---|
| ||
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=614400,RESOLUTION=852x480,CODECS="avc1.42e01f,mp4a.40.2"
-480p/-480p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1024000,RESOLUTION=1278x720,CODECS="avc1.42e01f,mp4a.40.2"
-720p/-720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=307200,RESOLUTION=426x240,CODECS="avc1.42e01f,mp4a.40.2"
-240p/-240p.m3u8 |
Ограничения
1. HLS Edge может быть использован только для воспроизведения HLS потоков, клиентские сессии с использованием других протоколов работать не будут.
2. Не работают такие функции, как запись, снятие снапшотов, микширование, захват потоков с другого сервера и прочие функции обработки потоков
2. В текущей реализации, сегменты HLS ABR потоков могут храниться только на диске, но не в памяти
Хранение сегментов HLS
Использование диска
...