Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

2. Если HLS нарезка потока останавливается при помощи REST запроса /hls/terminate, и есть активные HLS подписчики, то нарезка будет перезапущена. При этом активные HLS подписчики должны повторно подключиться к потоку.

Поддержка HLS ABR

Устаревшая реализация в сборках 5.2.484 - 5.2.582

В сборке 5.2.484 добавлена поддержка HLS ABR плейлистов. Использование этой возможности включается при помощи настройки

...

Code Block
languagebash
themeRDark
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
themeRDark
transcoder_align_encoders=true

Кроме того, должен быть включен FPS фильтр

Code Block
themeRDark
video_filter_enable_fps=true
video_filter_fps=25

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

Code Block
themeRDark
video_filter_fps_gop_synchronization=50

Настойки HLS Edge узлов

На HLS Edge узлах необходимо отключить использование прелоадера и транскодирование потоков

Code Block
themeRDark
hls_preloader_enabled=false
hls_player_width=0
hls_player_height=0

Необходимо также настроить профили транскодирования в файле cdn_profiles.yml

Code Block
languageyml
themeRDark
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
themeRDark
hls_abr_enabled=true

Использование

Клиент должен запрашивать плейлист так же, как и в обычном режиме

Code Block
themeRDark
https://server:8445/test_0/test_0.m3u8

Плейлист содержит ссылки на плейлисты вариантов потока, между которыми клиент может переключаться

Code Block
themeRDark
#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

Использование диска

...