Skip to content

Transcoder

Обзор

Transcoder — это модуль в составе mcaster, который обеспечивает перекодирование видеопотоков для различных сценариев вещания. Модуль поддерживает как генерацию DVB совместимого CBR (Constant Bit Rate) качества, так и мультибитрейт (MBR) кодирование для OTT (Over-The-Top) сервисов.

Применение модуля

Основные сценарии использования

Соединение SDI и компрессированного видео

  • Проблема: Необходимость передачи SDI сигнала в компрессированном формате
  • Решение: Перекодирование SDI в H.264/H.265 для цифрового вещания
  • Результат: Совместимость с современными системами доставки

Снижение битрейта

  • Проблема: Высокий битрейт входящего потока
  • Решение: Перекодирование с оптимизацией битрейта
  • Результат: Экономия пропускной способности сети

Стыковка DVB и OTT

  • Проблема: Разные требования к качеству для DVB и интернет-вещания
  • Решение: Создание отдельных потоков с разными настройками
  • Результат: Оптимальное качество для каждого типа доставки

Передача потока неизвестного качества в DVB

  • Проблема: Нестабильное качество входящего потока
  • Решение: Нормализация и стабилизация параметров
  • Результат: Гарантированное качество для DVB вещания

Режимы работы

DVB CBR (Constant Bit Rate)

Назначение

Режим предназначен для цифрового телевизионного вещания с фиксированным битрейтом, обеспечивающим стабильное качество передачи.

Конфигурация

stream ort {
  input udp://239.0.0.1:1234;
  transcoder external=false gop=28 hw=cpu vb=6100k bframes=3 vcodec=h264 b-pyramid=strict bufsize=6000k rc-lookahead=30 x264opts=videoformat=component:no-scenecut:force-cfr:colorprim=bt470bg:transfer=bt470bg:colormatrix=bt470bg:weightb=0 interlace=true open_gop=true preset=fast refs=4 size=1920x1080:scale ab=192k acodec=mp2a atrack=1;
}

Ключевые параметры DVB

Параметр Описание Значение
vb Видео битрейт 6100k
size Разрешение 1920x1080
gop Размер группы кадров 28
bframes Количество B-кадров 3
interlace Чересстрочная развертка true
ab Аудио битрейт 192k
acodec Аудио кодек mp2a

OTT MBR (Multi-Bitrate)

Назначение

Режим предназначен для интернет-вещания с адаптивным битрейтом, обеспечивающим оптимальное качество для различных условий сети.

Конфигурация

stream ort {
  input udp://239.0.0.1:1234;
  transcoder vb=600k size=x360 vb=2000k size=x720 vb=5000k size=x2180;
}

Ключевые параметры OTT

Параметр Описание Значение
vb Видео битрейт 600k, 2000k, 5000k
size Разрешение x360, x720, x2180

Детальные параметры конфигурации

Видео параметры

Базовые настройки

  • external=false — использование встроенного транскодера
  • hw=cpu — аппаратное ускорение (cpu/gpu)
  • vcodec=h264 — видеокодек (h264/h265)
  • size=1920x1080 — разрешение выходного видео

Параметры качества

  • vb=6100k — битрейт видео
  • bufsize=6000k — размер буфера кодирования
  • rc-lookahead=30 — глубина анализа для контроля битрейта
  • preset=fast — пресет кодирования (fast/medium/slow)

Параметры GOP

  • gop=28 — размер группы кадров
  • bframes=3 — количество B-кадров
  • b-pyramid=strict — пирамида B-кадров
  • open_gop=true — открытая GOP структура
  • refs=4 — количество референсных кадров

Аудио параметры

  • ab=192k — битрейт аудио
  • acodec=mp2a — аудиокодек (mp2a/aac)
  • atrack=1 — количество аудиодорожек

DVB специфичные параметры

  • interlace=true — чересстрочная развертка
  • x264opts=videoformat=component — формат видео
  • colorprim=bt470bg — цветовое пространство
  • transfer=bt470bg — гамма-коррекция
  • colormatrix=bt470bg — цветовая матрица

Ограничения и особенности

Несовместимость режимов

Важно: Подготовить поток одновременно для DVB и OTT невозможно. Необходимо создавать два отдельных потока:

# DVB поток
stream dvb_channel {
  input udp://239.0.0.1:1234;
  transcoder vb=6100k size=1920x1080 gop=28 interlace=true;
  output udp://239.0.0.2:1234;
}

# OTT поток
stream ott_channel {
  input udp://239.0.0.1:1234;
  transcoder vb=600k size=x360 vb=2000k size=x720 vb=5000k size=x2180;
  output hls:///var/www/hls/ott;
}

Адаптивность транскодера

Модуль эффективно обрабатывает: - Переключения источников — автоматическая адаптация к новому источнику - Смену разрешения — динамическое изменение параметров кодирования - Смену кодеков — автоматическое переключение между форматами - Стабильность выхода — сохранение фиксированных параметров на выходе

Примеры конфигураций

DVB вещание HD

stream hd_dvb {
  input udp://239.0.0.1:1234;
  transcoder external=false gop=28 hw=cpu vb=8000k bframes=3 vcodec=h264 b-pyramid=strict bufsize=8000k rc-lookahead=30 x264opts=videoformat=component:no-scenecut:force-cfr:colorprim=bt709:transfer=bt709:colormatrix=bt709:weightb=0 interlace=false open_gop=true preset=fast refs=4 size=1920x1080:scale ab=256k acodec=mp2a atrack=2;
  push udp://239.0.0.2:1234;
}

OTT мультибитрейт

stream ott_multibitrate {
  input udp://239.0.0.1:1234;
  transcoder vb=400k size=x240 vb=800k size=x360 vb=1500k size=x480 vb=2500k size=x720 vb=4000k size=x1080;
}

SD DVB вещание

stream sd_dvb {
  input udp://239.0.0.1:1234;
  transcoder external=false gop=25 hw=cpu vb=4000k bframes=2 vcodec=h264 b-pyramid=strict bufsize=4000k rc-lookahead=25 x264opts=videoformat=component:no-scenecut:force-cfr:colorprim=bt470bg:transfer=bt470bg:colormatrix=bt470bg:weightb=0 interlace=true open_gop=true preset=fast refs=3 size=720x576:scale ab=128k acodec=mp2a atrack=1;
  push udp://239.0.0.3:1234;
}

Интеграция с LSI

stream resilient_dvb {
  input copy://primary_source source_timeout=10;
  input copy://backup_source;
  title "Resilient DVB Channel";

  transcoder external=false gop=28 hw=cpu vb=6000k bframes=3 vcodec=h264 b-pyramid=strict bufsize=6000k rc-lookahead=30 x264opts=videoformat=component:no-scenecut:force-cfr:colorprim=bt709:transfer=bt709:colormatrix=bt709:weightb=0 interlace=false open_gop=true preset=fast refs=4 size=1920x1080:scale ab=192k acodec=mp2a atrack=1;

  push udp://239.0.0.4:1234;
}

Устранение неполадок

Проблемы с качеством

Низкое качество выходного потока

  1. Увеличьте битрейт (vb) для лучшего качества
  2. Проверьте качество входящего потока
  3. Оптимизируйте настройки кодирования
  4. Мониторьте метрики качества

Нестабильный битрейт

  1. Проверьте настройки bufsize и rc-lookahead
  2. Убедитесь в стабильности входящего потока
  3. Проверьте загрузку системы
  4. Оптимизируйте пресет кодирования

Проблемы с производительностью

Высокая загрузка CPU

  1. Включите аппаратное ускорение (hw=gpu)
  2. Упростите настройки кодирования
  3. Используйте более быстрый пресет (preset=veryfast)
  4. Снизьте разрешение или битрейт

Задержки кодирования

  1. Уменьшите rc-lookahead для снижения задержки
  2. Оптимизируйте размер GOP для баланса качества и задержки
  3. Проверьте производительность системы
  4. Рассмотрите использование внешнего транскодера

Рекомендации по настройке

Оптимизация для DVB

  • Используйте CBR для стабильного битрейта
  • Настройте правильные цветовые пространства для стандарта
  • Оптимизируйте GOP для совместимости с декодерами
  • Проверьте соответствие стандартам DVB

Оптимизация для OTT

  • Создайте несколько битрейтов для адаптивности
  • Используйте прогрессивную развертку для веб-плееров
  • Оптимизируйте для мобильных устройств (низкие битрейты)
  • Тестируйте на различных устройствах

Общие рекомендации

  • Мониторьте качество в реальном времени
  • Оптимизируйте настройки под конкретный контент
  • Используйте аппаратное ускорение при возможности
  • Планируйте резервирование для критичных потоков

Заключение

Transcoder модуль обеспечивает гибкое и эффективное перекодирование видеопотоков для различных сценариев вещания. Поддержка как DVB CBR, так и OTT MBR режимов делает его универсальным решением для современных систем вещания. Адаптивность к изменениям входящих потоков и стабильность выходных параметров обеспечивают надежную работу в сложных условиях вещания.