SDI Coder¶
Обзор¶
SDI Coder — это модуль в составе mcaster, предназначенный для захвата видео и аудио через SDI платы. Модуль обеспечивает высококачественный прием профессионального видеосигнала и является одним из основных вариантов входов стрима в систему mcaster.
Поддерживаемые платы захвата¶
Dektec¶
- Полная поддержка всех моделей Dektec
- Автоматическое определение параметров сигнала
- Поддержка всех стандартов SDI
Blackmagic Design¶
- Совместимость с картами Blackmagic
- Поддержка DeckLink серии
- Интеграция с Blackmagic SDK
V4L совместимые карты¶
- Streamlabs — карты для стриминга
- Softlab — профессиональные карты захвата
- Magewell — USB и PCI карты захвата
- Любые другие карты с поддержкой V4L2
Поддерживаемые форматы¶
SDI-SD (Standard Definition)¶
- Разрешение: 480i, 576i
- Частота кадров: 25, 29.97, 30 fps
- Особенности: Поддержка аналогового телетекста (zvbi)
- Применение: Архивные материалы, SD вещание
SDI-HD (High Definition)¶
- Разрешения: 720p, 1080i, 1080p
- Частоты кадров: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60 fps
- Стандарты: HD-SDI, 3G-SDI
SDI-UHD (Ultra High Definition)¶
- Разрешения: 4K (2160p), 8K
- Стандарты: 6G-SDI, 12G-SDI
- Применение: Современное UHD вещание
Входные сигналы¶
Видео¶
- Основной видеосигнал SDI
- Автоматическое определение параметров
- Поддержка различных цветовых пространств
Мультиканальное аудио¶
- Каналы: до 16 аудиоканалов
- Форматы: PCM, AES/EBU
- Частота дискретизации: 48 kHz (стандарт), 96 kHz (опционально)
- Битность: 16, 20, 24 бит
Телетекст и субтитры¶
- SDI-SD: Аналоговый телетекст (zvbi)
- SDI-HD: Цифровые субтитры
- Форматы: DVB, CEA-608, CEA-708
- Кодировки: UTF-8, Latin-1
CEA-608/708 скрытые субтитры¶
Скрытые субтитры (англ. Closed captions) — текстовая репрезентация звуковой части ТВ-программы, фильма и т.п. Это своего рода транскрипция или перевод диалога, звуковых эффектов и некоторой ключевой информации, необходимой для понимания происходящего. Изначально они создавались для людей, имеющих ограничения по слуху.
Mcaster способен автоматически обнаруживать скрытые субтитры в SDI-потоке и осуществлять их чтение. Модуль читает субтитры CEA-608/708 из SDI-источника и упаковывает их в видеодорожку MPEG-TS в виде H.264 SEI NALU.
Note
Файл H.264 состоит из некоторого числа NAL Units (Network Abstraction Layer Units), т.е. единиц так называемого уровня сетевой абстракции, а SEI* (Supplemental Enhancement Information) — это дополнительная информация о расширении.
CEA-608 — это символьный формат скрытых субтитров, используемый в потоках, который предоставляет до 4-ёх каналов для передачи информации. Mcaster добавляет 4 текстовых дорожки с субтитрами для 4-ёх каналов CEA-608 (одна дорожка на один канал). В итоге, на выходе мы имеем видеодорожку со скрытыми субтитрами СEA-608/708 и 4 дорожки с текстовыми субтитрами. Модуль даёт возможность проиграть дорожку с субтитрами в виде WebVTT и TTML, сигнализируя об их наличии в HLS, DASH и MSS манифестах.
VBI телетекст (важно для устаревших систем вещания)¶
VBI телетекст — это критически важная функция для устаревших систем вещания, которые всё ещё передают телетекст и SD качество. VBI (Vertical Blanking Interval) — это перерыв в последовательности строк, который используется в аналоговом телевидении. Во время VBI информация об изображениях не передается, но эта область может содержать такую информацию, как телетекст или скрытые субтитры.
Mcaster позволяет читать EBU Телетекст и субтитры (EBU Teletext subtitle data) из VBI потоков, полученных с SDI-платы, и передавать их в видео, которое отправляется в MPTS или SPTS.
При получении видеопотока с SDI-платы Mcaster:
- Декодирует полученные данные
- Считывает из VBI информацию о телетексте
- Сжимает данные для последующей передачи по Интернету
- Упаковывает поток с телетекстом в MPEG-TS
Настройка VBI телетекста¶
Для включения чтения телетекста используйте параметр ttxt_descriptors
:
stream example_stream {
input v4l2:// audio_device=plughw:1,0 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle vbi_debug=true vbi_device=/dev/vbi0 video_device=/dev/video0;
}
Для карт Decklink:
stream example_stream {
input decklink://0 pixel=10 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle;
}
Для карт Decklink с NVENC транскодированием:
stream example-stream {
input decklink://2 pixel=10 ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle;
transcoder deviceid=0 external=false hw=nvenc vb=5000k vcodec=h264 open_gop=false preset=veryfast size=3840x2160:fit:#000000 ab=128k split_channels=false;
}
Параметры телетекста¶
В настройке ttxt_descriptors
укажите следующие параметры:
page
— номер страницы телетекста в формате0x[teletext_magazine_number][teletext_page_number]
lang
— язык телетекста согласно стандарту ISO 639-2type
— тип страницы телетекста:initial
— начальная страница телетекстаsubtitle
— страница с субтитрамиimpaired
— страница с субтитрами для людей с нарушениями слуха
Пример: ttxt_descriptors=0x100:rus:initial,0x888:rus:subtitle
Note
Эта функция особенно важна для интеграции с устаревшими системами вещания, которые продолжают использовать аналоговый телетекст в SD качестве.
Подсистема коррекции таймстемпов¶
Автоматическое выравнивание¶
- Дребезжание таймстемпов: Автоматическая стабилизация
- Алгоритмы: Адаптивная фильтрация, медианная фильтрация
- Точность: ±1 мкс
Коррекция потерянных кадров¶
- Обнаружение: Автоматическое выявление пропущенных кадров
- Восстановление: Дублирование предыдущего кадра или интерполяция
- Логирование: Запись всех корректировок в лог
Настройки коррекции¶
timestamp_correction:
enabled: true
jitter_threshold: 1000 # микросекунды
frame_drop_detection: true
interpolation_method: "duplicate" # duplicate, interpolate
log_corrections: true
Конфигурация модуля¶
Базовые настройки¶
sdi_coder:
device: "/dev/video0"
input_format: "auto" # auto, 1080i50, 720p60, etc.
audio_channels: 8
enable_teletext: true
timestamp_correction: true
Параметры захвата¶
capture_settings:
video_buffer_size: 10 # секунды
audio_buffer_size: 5 # секунды
drop_frames_on_overflow: true
sync_mode: "hardware" # hardware, software
Настройки вывода¶
output_settings:
format: "mpegts"
bitrate: "auto" # auto или конкретное значение
gop_size: 30
audio_codec: "aac"
video_codec: "h264"
Интеграция с mcaster¶
Как источник стрима¶
SDI Coder может быть настроен как источник для: - Прямой трансляции - Записи в DVR - Перекодирования - Распространения по сети
Пример конфигурации потока¶
streams:
sdi_main:
source: "sdi_coder:///dev/video0"
output: "rtmp://server/live/stream"
transcoder:
video:
codec: "h264"
bitrate: "5000k"
resolution: "1920x1080"
audio:
codec: "aac"
bitrate: "128k"
channels: 2
Мониторинг и диагностика¶
Статистика захвата¶
- Частота кадров (текущая/средняя)
- Битрейт видео и аудио
- Количество корректировок таймстемпов
- Статус синхронизации
Логирование¶
logging:
level: "info" # debug, info, warning, error
log_timestamp_corrections: true
log_frame_drops: true
log_device_status: true
Метрики Prometheus¶
sdi_coder_fps
— частота кадровsdi_coder_bitrate
— битрейтsdi_coder_timestamp_corrections
— количество корректировокsdi_coder_frame_drops
— потерянные кадры
Устранение неполадок¶
Частые проблемы¶
Отсутствие сигнала¶
- Проверьте подключение SDI кабеля
- Убедитесь в правильности выбора устройства
- Проверьте формат входного сигнала
Проблемы с синхронизацией¶
- Включите коррекцию таймстемпов
- Проверьте качество SDI сигнала
- Настройте параметры буферизации
Проблемы с аудио¶
- Проверьте настройки аудиоканалов
- Убедитесь в поддержке аудиоформата
- Проверьте синхронизацию аудио/видео
Диагностические команды¶
# Проверка доступных устройств
v4l2-ctl --list-devices
# Информация о текущем сигнале
v4l2-ctl --device=/dev/video0 --all
# Тест захвата
ffmpeg -f v4l2 -i /dev/video0 -t 10 test.mp4
Требования к системе¶
Аппаратные требования¶
- CPU: Минимум 4 ядра для HD, 8 ядер для UHD
- RAM: 8 ГБ для HD, 16 ГБ для UHD
- Сеть: Гигабитный Ethernet
- Хранилище: SSD для буферизации
Программные требования¶
- Linux kernel 4.19+
- V4L2 поддержка
- FFmpeg 4.0+
- Подходящие драйверы для SDI карты
Заключение¶
SDI Coder предоставляет профессиональное решение для захвата SDI сигналов в системе mcaster. Модуль обеспечивает высокую надежность, автоматическую коррекцию таймстемпов и поддержку широкого спектра оборудования, что делает его идеальным выбором для профессионального вещания.