Skip to content

Базовые архитектурные концепции и терминология ​

Для эффективного понимания работы RUSEON Core полезно познакомиться с фундаментальными терминами и инженерными принципами, на которых построена система.


1. Трансмуксинг против Транскодирования ​

  • Транскодирование: Распаковывает сжатое видео в несжатые пиксели (YUV/RGB), изменяет их размер/битрейт и заново кодирует. Требует огромных вычислительных мощностей процессора или видеокарты.
  • Трансмуксинг (Zero-Transcoding): Принимает уже сжатые видеопакеты (NAL-юниты) и меняет только внешнюю оболочку контейнера (например, из RTP RTSP в атомы MP4 или RTP WebRTC) без изменения содержимого кадров. Снижает нагрузку на процессор более чем на 90%.

2. NAL-юниты и параметры кодека (SPS / PPS / VPS) ​

Сжатый видеопоток представляет собой последовательность NAL-юнитов (Network Abstraction Layer):

  • SPS (Sequence Parameter Set): Описывает разрешение видео, профиль, уровень и пропорции кадра.
  • PPS (Picture Parameter Set): Содержит параметры энтропийного кодирования и групп слайсов.
  • VPS (Video Parameter Set): Используется в H.265 (HEVC) для описания многослойных последовательностей.

RUSEON Core перехватывает и кеширует эти параметры с помощью atomic.Pointer[CodecParams] внутри Кольцевого буфера, благодаря чему новые WebRTC и HLS клиенты мгновенно запускают аппаратный декодер без ожидания следующей трансляции параметров от камеры.


3. Структура GOP и типы кадров (I-кадры и P-кадры) ​

  • I-кадр (KeyFrame / IDR): Полный самостоятельный кадр. Декодируется автономно без ссылки на другие кадры.
  • P-кадр (Predicted Frame): Содержит только разницу (векторы движения) относительно предыдущих кадров. Имеет компактный размер.
  • GOP (Group of Pictures): Интервал между двумя соседними I-кадрами. При 25 fps и GOP в 2 секунды камера передаёт 1 I-кадр и 49 P-кадров.
text
[ I-Кадр ] ---> [ P-Кадр ] ---> [ P-Кадр ] ---> ... ---> [ Следующий I-Кадр ]
    ▲
    └── Воспроизведение клиентом и запись файлов ВСЕГДА начинаются с I-кадра!

4. Архитектура Fragmented MP4 (fMP4) ​

В отличие от классических MP4-файлов, где индексная таблица moov записывается в самом конце файла, Фрагментированный MP4 (fMP4) делит запись на независимые самодостаточные фрагменты (пары атомов moof + mdat):

  • Отказоустойчивость: При аварийном отключении питания все уже записанные фрагменты полностью пригодны для воспроизведения.
  • Мгновенное закрытие файлов: Файлы закрываются без перезаписи заголовков.

5. Протокол WHEP (WebRTC HTTP Egress Protocol) ​

WHEP (IETF RFC) — это стандартизированный легковесный протокол HTTP-сигнализации для получения видеопотоков WebRTC:

  • Браузер отправляет стандартный HTTP POST со своим SDP Offer.
  • Сервер возвращает HTTP 200 OK с SDP Answer и ICE-кандидатами.
  • Видеопоток мгновенно начинает передаваться по протоколу UDP с задержкой менее 500 мс.

Связанная документация ​

Released under the MIT License.