◆ ForgeVis
Skip to content

Субпотоки ​

ForgeVis поддерживает конфигурацию с двумя потоками: основной поток (высокое качество) и субпоток (низкое качество).

Сценарий использования ​

  • Основной поток: 1080p @ 4 Мбит/с → запись
  • Субпоток: 480p @ 1 Мбит/с → рестриминг на видеостену/мобильные клиенты

Конфигурация ​

yaml
cameras:
  camera_001:
    source: "rtsp://user:pass@camera/main"      # Основной поток (обязательно)
    sub: "rtsp://user:pass@camera/main/sub"     # Субпоток (опционально)

RTSP Endpoints ​

Основной поток ​

rtsp://localhost:8554/camera_001

Использует URL source из конфигурации.

Субпоток ​

rtsp://localhost:8554/camera_001/sub

Использует URL sub из конфигурации.

Если sub не настроен, возвращается 404 Not Found.

Запись ​

Записывается только основной поток. Субпотоки используются исключительно для рестриминга.

yaml
cameras:
  camera_001:
    source: "rtsp://..."  # Записывается на диск
    sub: "rtsp://..."     # Только для RTSP клиентов, не записывается
    record: true          # Применяется только к основному потоку

Idle Timeout ​

Каждый поток (основной и субпоток) поддерживает собственное подключение и idle timeout.

  • Подключение основного потока поддерживается активным, если включена запись
  • Субпоток отключается через idle_timeout_sec когда нет подключенных RTSP клиентов
yaml
rtsp:
  idle_timeout_sec: 10  # Применяется к main и sub

Архитектура ​

┌──────────────┐
│ Камера       │
│              │
│ Main: 1080p  │─────┐
│ Sub:  480p   │──┐  │
└──────────────┘  │  │
                  │  │
                  ▼  ▼
            ┌──────────────┐
            │  StreamHub   │
            │              │
            │ camera_001   │ (main)
            │ camera_001/sub│
            └──────────────┘
                  │  │
          ┌───────┘  └────────┐
          ▼                   ▼
    ┌──────────┐        ┌────────────┐
    │ Recorder │        │ RTSP       │
    │ (main)   │        │ Клиенты    │
    │          │        │ (main/sub) │
    └──────────┘        └────────────┘

Пример: Настройка видеостены ​

Сценарий: 100 камер, видеостена отображает 16 потоков одновременно

Конфигурация:

yaml
cameras:
  camera_001:
    source: "rtsp://camera/main"    # 1080p запись
    sub: "rtsp://camera/sub"        # 480p для видеостены
  # ... camera_002 до camera_100

Приложение видеостены:

bash
# Подключение к субпотокам для экономии bandwidth
ffplay rtsp://forgevis:8554/camera_001/sub
ffplay rtsp://forgevis:8554/camera_002/sub
# ... до 16 одновременных потоков

Преимущества:

  • Сниженный bandwidth: 16 × 1 Мбит/с = 16 Мбит/с (против 64 Мбит/с для основных потоков)
  • Нагрузка на камеру: Всё ещё только 1 подключение на камеру
  • Качество: Субпотока достаточно для превью на видеостене

Детали реализации ​

Ключи StreamHub ​

  • Основной поток: camera_001
  • Субпоток: camera_001/sub

Это независимые потоки с отдельными подключениями к камере.

Парсинг URI ​

RTSP сервер парсит URI запроса:

  • /camera_001 → ищет cameras.camera_001.source
  • /camera_001/sub → ищет cameras.camera_001.sub

Формат URL ​

URL субпотока следует конвенциям производителя камеры:

  • Hikvision: rtsp://camera/Streaming/Channels/102 (main: 101, sub: 102)
  • Dahua: rtsp://camera/cam/realmonitor?channel=1&subtype=1 (main: subtype=0, sub: subtype=1)
  • Generic: Часто суффиксы /main и /sub

Proprietary software.