Медиа.маги Документация

Last updated

hls5

hls5 упаковывает дорожки аудио, видео и текста в плейлист HLS v5.

1. Сводка

Упаковывает закодированные аудио, видео и необязательные дорожки субтитров в плейлист HLS v5 на основе фрагментированного MP4 (fMP4). Поддерживает современные кодеки, сайдкар-наборы адаптации субтитров и более богатый словарь тегов, появившийся после HLS v3 — правильный вариант по умолчанию для современного воспроизведения на Apple, Android и в браузерах.

2. Когда использовать

  • Готовите основную поставку HLS для современных плееров iOS, tvOS, Android и HTML5.
  • Упаковываете лестницу HEVC в HLS — нужен v5 / fMP4, поскольку v3 не несёт HEVC.
  • Доставляете субтитры через контакт Text как сайдкар-группу, а не вжигаете их в битовый поток видео.
  • Спариваете с DASH, чтобы покрыть и Apple-нативные, и дружественные к CMAF приёмники из одного набора исходных файлов.

3. Входы

  • Video[]core.VideoTrack. Один или несколько закодированных видеорендериев для включения в плейлист как вариантные потоки. Обязателен.

    Совместимые узлы выше по потоку:

    • avcintra — кодирует интра-only H.264 (AVC-Intra) для вещательных поставок.
    • ni264 — аппаратно-ускоренный кодер H.264 на картах NetInt.
    • qsv264 — аппаратно-ускоренный кодер H.264 через Intel Quick Sync.
    • x264 — программный кодер H.264/AVC (libx264).
    • x265 — программный кодер H.265/HEVC (libx265).
    • copy — пропускает исходную видеодорожку без изменений.
  • Audio[]core.AudioTrack. Одна или несколько закодированных аудиодорожек. Обязателен.

    Совместимые узлы выше по потоку:

    • aac — кодирует аудио кодеком AAC.
    • ac3 — кодирует аудио кодеком AC-3 (Dolby Digital).
    • eac3 — кодирует аудио кодеком E-AC-3 (Dolby Digital Plus).
    • pcm — даёт несжатую аудиодорожку PCM.
    • copy — пропускает исходную аудиодорожку без изменений.
  • Text[]core.TextTrack. Необязательные дорожки субтитров для включения в плейлист как сайдкар-группа.

    Совместимые узлы выше по потоку:

    • ccinject — вставляет скрытые субтитры или субтитры в выход.
    • map/text — выбирает, какие текстовые потоки источника идут на мультиплексор.

4. Выходы

  • Packagecore.Package. Мастер-плейлист HLS v5 (.m3u8) плюс файлы сегментов fMP4, поддерживающие его варианты, готовые к публикации в CDN или хранилище.

    Совместимые узлы ниже по потоку:

    • upload — записывает пакет на целевой URL.
    • analyze — инспектирует пакет и сообщает свойства медиа.
    • concat — склеивает совместимые пакеты встык.
    • delete — удаляет пакет после того, как потребители ниже по потоку его прочли.
    • move — перемещает пакет в другое место.

5. Параметры

Форма «Настройки» узла hls5.

Форма «Настройки» — один столбец с тремя полями. Описаны в порядке следования в форме.

  • Node Label (string, по умолчанию пусто)

    Произвольное имя, отображаемое на плитке узла на холсте.

    • Что задаёт. Подпись над плиткой; на плейлист не влияет.
    • Когда менять. Задавайте, когда в одном графе несколько упаковщиков — например, основной HLS v5 рядом с запасным HLS v3 и DASH, — чтобы каждый выход был узнаваем с одного взгляда.
  • Output Filename (string, по умолчанию пусто; необязательно)

    Имя мастер-плейлиста верхнего уровня.

    • Что задаёт. Имя файла .m3u8, записываемое под выходным URL процесса, плюс префикс каталога, под которым размещаются сегменты, когда значение содержит компонент каталога.
    • Когда менять. Задавайте, чтобы держать плейлисты соседних упаковщиков в разных каталогах — например, hls5/index.m3u8 рядом с hls3/index.m3u8 в одном выходном бакете. Оставляйте пустым для значения платформы по умолчанию.
    • Переменные. поддерживает $variables.
  • Segment Duration (int, секунды, обязательно)

    Целевая длина сегмента в секундах.

    • Что задаёт. Как часто упаковщик закрывает текущий сегмент fMP4 и пишет следующий; #EXT-X-TARGETDURATION плейлиста размечается под это значение.
    • Когда менять. Более короткие сегменты режут задержку старта и переключения ценой большего числа запросов в минуту; более длинные дружественнее к кэшированию CDN и длинному VOD. Подгоняйте значение под ритм, который ожидает принимающий плеер, и держите его согласованным по рендериям, делящим плейлист.
    • Обязательно. да.

Соответствие JSON-ключей и названий полей

JSON-ключи opt, которые встречаются в файлах процессов, соответствуют названиям полей формы так:

JSON-ключ Название поля
name Output Filename
segdur Segment Duration

6. Пример

Адаптивный стриминг с HLS, DASH и субтитрами на холсте

Полный разбор — переменные, настройка каждого узла и ожидаемый результат — смотрите в Adaptive streaming with HLS, DASH and captions.

7. Где используется

  • Adaptive streaming with HLS, DASH and captions — упаковывает рендерий H.264 от x264 с закодированным аудио AAC и связывает дорожку субтитров WebVTT, сгенерированную whisper, через контакт Text.

8. Антипаттерны

  • Допущение, что любой устаревший приёмник принимает fMP4. Небольшая доля старых умных телевизоров и очень ранних устройств iOS разбирает только сегменты MPEG-TS. Когда важно широкое покрытие приёмников, спаривайте hls5 с запасным hls3, а не поставляйте hls5 в одиночку.
  • Забытое шифрование, когда CDN его требует. Некоторые контракты доставки предписывают AES-128 или SAMPLE-AES на сегментах у упаковщика. Проверяйте политику CDN перед публикацией и настраивайте флаги шифрования выше по потоку, а не полагайтесь на достаточность значения платформы по умолчанию.
  • Смешение аудиокодеков в одном варианте. HLS v5 поддерживает аудиогруппы по вариантам, но один вариант должен ссылаться на один аудиокодек. Стройте отдельные варианты, предлагая AAC и AC-3 в одном манифесте, вместо их смешения внутри одной ступени.

9. Заметки

  • Форма Package для HLS v5 включает и мастер-плейлист, и файлы сегментов fMP4 по вариантам; цели upload должны быть каталогами.
  • Субтитры, приходящие на контакт Text, связываются из мастер-плейлиста как отдельная группа и подаются как сегменты WebVTT рядом с медиа.
Медиа.маги Документация