Skip to content

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:

  1. Декодирует полученные данные
  2. Считывает из VBI информацию о телетексте
  3. Сжимает данные для последующей передачи по Интернету
  4. Упаковывает поток с телетекстом в 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-2
  • type — тип страницы телетекста:
  • 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 — потерянные кадры

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

Частые проблемы

Отсутствие сигнала

  1. Проверьте подключение SDI кабеля
  2. Убедитесь в правильности выбора устройства
  3. Проверьте формат входного сигнала

Проблемы с синхронизацией

  1. Включите коррекцию таймстемпов
  2. Проверьте качество SDI сигнала
  3. Настройте параметры буферизации

Проблемы с аудио

  1. Проверьте настройки аудиоканалов
  2. Убедитесь в поддержке аудиоформата
  3. Проверьте синхронизацию аудио/видео

Диагностические команды

# Проверка доступных устройств
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. Модуль обеспечивает высокую надежность, автоматическую коррекцию таймстемпов и поддержку широкого спектра оборудования, что делает его идеальным выбором для профессионального вещания.