Skip to content

Архитектура пайплайна приёма потоков (Stream Pipeline) ​

Пайплайн приёма потоков (internal/stream/) отвечает за установку надёжных соединений с IP-камерами, обработку сетевых сбоев, депакетизацию входящих RTP-пакетов, извлечение параметров кодека и передачу структурированных видеокадров в Кольцевой буфер.


1. Жизненный цикл соединений и семафор подключений (dialSemaphore) ​

При одновременной перезагрузке сотен камер (например, после восстановления электропитания на объекте) неконтролируемые одновременные попытки подключения могут перегрузить сетевой стек сервера и процессоры камер.

RUSEON Core реализует строгий контроль подключений:

  • dialSemaphore: Ограничивает число одновременно выполняемых RTSP-хендшейков (не более 10 параллельных запросов).
  • Экспоненциальный Backoff с джиттером: При ошибке интервалы повторных попыток плавно увеличиваются ($1\text{с} \to 2\text{с} \to 4\text{с} \to \dots \to 30\text{с}$) со случайным смещением во времени для предотвращения эффекта "громоподобного стада" (thundering herd).

2. Депакетизация RTP и сборка NAL-юнитов ​

IP-камеры передают видеопоток, разбивая каждый кадр на тысячи мелких сетевых RTP-пакетов:

  1. Депакетизатор RFC 6184 (H.264) и RFC 7798 (H.265):
    • Собирает фрагментированные пакеты FU-A (Fragmentation Units) в непрерывные NAL-юниты.
    • Корректно обрабатывает одиночные NAL и агрегированные пакеты STAP-A.
  2. Нормализация стартовых кодов Annex B:
    • Добавляет стандартные 4-байтовые префиксы 0x00 0x00 0x00 0x01.
  3. Нормализация меток времени:
    • Преобразует тактовую частоту RTP 90 кГц в монотонно возрастающие микросекундные метки Presentation Timestamps (PTS), компенсируя аппаратный джиттер камер.

3. Извлечение и кеширование параметров кодека ​

При обнаружении NAL-юнитов типов SPS (Sequence Parameter Set) или PPS (Picture Parameter Set):

  • Парсер извлекает разрешение видео, профиль, уровень и соотношение сторон.
  • Атомарно обновляет структуру CodecParams потока.
  • Это позволяет любому новому HLS-муксеру или WebRTC-клиенту мгновенно получить валидные метаданные декодирования.

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

Released under the MIT License.