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;
}
Устранение неполадок¶
Проблемы с качеством¶
Низкое качество выходного потока¶
- Увеличьте битрейт (
vb
) для лучшего качества - Проверьте качество входящего потока
- Оптимизируйте настройки кодирования
- Мониторьте метрики качества
Нестабильный битрейт¶
- Проверьте настройки
bufsize
иrc-lookahead
- Убедитесь в стабильности входящего потока
- Проверьте загрузку системы
- Оптимизируйте пресет кодирования
Проблемы с производительностью¶
Высокая загрузка CPU¶
- Включите аппаратное ускорение (
hw=gpu
) - Упростите настройки кодирования
- Используйте более быстрый пресет (
preset=veryfast
) - Снизьте разрешение или битрейт
Задержки кодирования¶
- Уменьшите
rc-lookahead
для снижения задержки - Оптимизируйте размер GOP для баланса качества и задержки
- Проверьте производительность системы
- Рассмотрите использование внешнего транскодера
Рекомендации по настройке¶
Оптимизация для DVB¶
- Используйте CBR для стабильного битрейта
- Настройте правильные цветовые пространства для стандарта
- Оптимизируйте GOP для совместимости с декодерами
- Проверьте соответствие стандартам DVB
Оптимизация для OTT¶
- Создайте несколько битрейтов для адаптивности
- Используйте прогрессивную развертку для веб-плееров
- Оптимизируйте для мобильных устройств (низкие битрейты)
- Тестируйте на различных устройствах
Общие рекомендации¶
- Мониторьте качество в реальном времени
- Оптимизируйте настройки под конкретный контент
- Используйте аппаратное ускорение при возможности
- Планируйте резервирование для критичных потоков
Заключение¶
Transcoder модуль обеспечивает гибкое и эффективное перекодирование видеопотоков для различных сценариев вещания. Поддержка как DVB CBR, так и OTT MBR режимов делает его универсальным решением для современных систем вещания. Адаптивность к изменениям входящих потоков и стабильность выходных параметров обеспечивают надежную работу в сложных условиях вещания.