Базовые архитектурные концепции и терминология
Для эффективного понимания работы 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-кадров.
[ 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 мс.