Appearance
Субпотоки
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