Skip to content

Кодирование видео

media.transcode.video

Функция media.transcode.video кодирует выбранную видеодорожку в нужный выходной кодек и позволяет задать битрейт, разрешение и структуру GOP.

Формирование нескольких выходных качеств и все тонкости их совместной обработки описаны в мультибитрейтном транскодировании.

Выходные кодеки

Функция media.transcode.video включает кодирование в следующие выходные видеокодеки:

Видеокодек Значение codec
H.264 / AVC {set: h264}
H.265 / HEVC {set: hevc}
AV1 {set: av1}
MPEG-2 Video {set: mp2v}

Настройка

В transcoder.output задайте исходную видеодорожку source, целевой кодек codec и битрейт bitrate:

streams:
  - name: tv1
    inputs:
    - udp: {host: 239.0.0.1, port: 5000}
    transcoder:
      output:
      - source: !best_quality video
        codec: !set h264
        bitrate: 2800000

Выбор исходной дорожки

Для одного видеовыхода используйте source: {best_quality: video}: оно выбирает видеодорожку с максимальным объявленным битрейтом. Если входной ID заранее известен, задайте source: {exact: v1}. При работе с резервным источником этот ID должен обозначать нужную дорожку на каждом входе.

Все варианты выбора, поведение при переключении на резерв и примеры приведены в подробном описании выбора дорожек.

Если совпадений нет, live-правило не создаёт выход. Режимы if_missing: blank и substitute в live-тракте не исполняются; их нельзя использовать как подстановку отсутствующего сигнала.

Кодеки и параметры

  • codec — целевой видеокодек из списка выше. codec: same сохраняет исходные кадры без перекодирования.
  • bitrate — целевой битрейт в бит/с.
  • gop_size — длина GOP в кадрах.
  • gop_structure — структура последовательности кадров, например ip или ibbbp.

HEVC

streams:
  - name: tv1
    inputs:
    - udp: {host: 239.0.0.1, port: 5000}
    transcoder:
      output:
      - source: !best_quality video
        codec: !set hevc
        bitrate: 2800000

AV1

При программном кодировании сервер проверяет доступные кодеры в следующем порядке:

  • SVT-AV1;
  • libaom;
  • rav1e.

Если они отсутствуют, сервер пробует доступный кодер AV1 по умолчанию. Пресет скорости преобразуется в настройки выбранного кодера. На NVIDIA используется AV1 NVENC; видеокарта должна поддерживать кодирование AV1.

Для сегментной доставки сервер задаёт фиксированный интервал ключевых кадров и отключает определение смены сцен у программных кодеров AV1. Открытый GOP ими не предоставляется: сервер использует закрытый GOP и пишет предупреждение, если запрошен открытый.

Программный AV1 работает в VBR при GOP со случайным доступом. Если запрошен CBR, сервер продолжает кодирование в VBR и записывает предупреждение. Это ограничение кодера.

Изменение размера

resize Что делает
!scale точное масштабирование в заданные размеры
!fit вписать с сохранением пропорций (с полями, цвет фона настраивается)
!crop обрезать до заданных размеров

Проверка

Проверьте кодек и параметры выходной видеодорожки в статистике стрима. Затем откройте http://server/streaming/v/tv1/index.m3u8 в плеере и проверьте воспроизведение.

Что дальше

Форма пикселя и её связь с изменением размера описаны в разделе SAR и анаморфное видео.