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

Last updated

dash

dash упаковывает дорожки аудио, видео и текста в манифест DASH.

1. Сводка

Упаковывает закодированные аудио, видео и необязательные дорожки субтитров в манифест MPEG-DASH с сопутствующими файлами сегментов. Результат — поток с адаптивным битрейтом, который плееры забирают по обычному HTTP, с переключением качества по измерению полосы на стороне клиента.

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

  • Готовите манифест DASH для доставки в браузеры и OTT рядом с HLS или вместо него.
  • Собираете адаптивную лестницу, где несколько закодированных видеоступеней делят общий аудиорендерий и манифест.
  • Добавляете сайдкар-субтитры в адаптивную поставку через контакт Text.
  • Генерируете дружественный к CDN выход DASH в пару к HLS для кроссплатформенного покрытия.

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. Манифест DASH (.mpd) плюс файлы сегментов, поддерживающие его представления, готовые к публикации в CDN или хранилище.

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

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

5. Параметры

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

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

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

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

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

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

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

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

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

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

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

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

6. Пример

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

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

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

  • Adaptive streaming with HLS, DASH and captions — выдаёт манифест MPEG-DASH рядом с выходами HLS v3 и HLS v5, с дорожкой субтитров WebVTT, сгенерированной whisper и связанной через контакт Text.

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

  • Несовпадение длительности фрагмента между рендериями. Когда соседние кодеры, питающие один манифест, выдают разный ритм GOP, упаковщик не может выровнять границы фрагментов, и плеер застревает на каждом переключении. Задавайте у каждого кодера-участника Key Interval кратным Fragment Duration перед их подключением.
  • Поставка несовместимых профилей кодека в одном наборе адаптации. Смешение, например, рендерия H.264 High с рендерием H.264 Baseline в одном наборе адаптации Video сломает декодеры, не умеющие переходить между профилями. Держите профиль, разрядность и субдискретизацию цветности согласованными по ступеням, которые манифест объявляет переключаемыми.
  • Восприятие DASH как единственного нужного манифеста. Устройства Apple по-прежнему требуют HLS для нативного воспроизведения. Спаривайте DASH с выходом HLS (hls5 или hls3), когда аудитория включает iOS, tvOS или Safari.

9. Заметки

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