性能 为什么 功能 架构 演示 上手 GitHub
MIT Licensed  ·  Open Source

NightLight

让夜间监控不再是盲区
低光照视频实时增强系统

⚡C++17
🎬FFmpeg
🧠ONNX Runtime
🖥️Qt / QML
🤖LLM Agent
🐳Docker
🚀RTMP
🌐WebSocket
📊Prometheus
⚡C++17
🎬FFmpeg
🧠ONNX Runtime
🖥️Qt / QML
🤖LLM Agent
🐳Docker
🚀RTMP
🌐WebSocket
📊Prometheus
🌙Real-time Enhancement
⚙️Adaptive GPU/CPU Fallback
🔍Denoise & Deblur
💬Natural Language Control
🛡️Approval-based Mutation
📺3×3 Video Wall
📈Full Observability
🌙Real-time Enhancement
⚙️Adaptive GPU/CPU Fallback
🔍Denoise & Deblur
💬Natural Language Control
🛡️Approval-based Mutation
📺3×3 Video Wall
📈Full Observability

效果演示

NightVision 客户端的低光照实时渲染效果演示。

NightVision 客户端效果演示 Live Preview

性能一目了然

从单帧延迟到并发能力,NightLight 在真实场景下跑出来的数字。

0
处理延迟 (P50)
8 路满载 · 出队→prep
0
稳态并发
17–20 fps / 路 · 全 NVENC
0
NVENC 编码池
12 session · 0 丢帧
0
GPU 利用率
RTX 5060 · 仍有余量

基准:RTX 5060 8GB · 8 路 Pipeline 转码 · T8 30 min 稳态 · 出队口径(不计入采集队列排队) · 详见 docs/p3-baseline-report.md

为什么需要 NightLight

夜间监控是安防、交通、工业场景中最常见也最容易被忽视的痛点。大量摄像头一到夜间就沦为摆设。

痛点

🌑夜间可视性差

低照度下画面漆黑、噪点密集,人眼难以辨识车牌、人脸和异常事件。简单亮度拉伸导致过曝和色彩失真。

痛点

📋多路运维效率低

多路视频流需逐路检查状态、手动重启故障流、人工记录日志。重复工作耗时且易遗漏告警。

痛点

🧠缺乏智能辅助

系统只能被动显示,无法主动识别异常、提供诊断建议或执行自动化运维,故障排查全凭经验。

痛点

🔧系统碎片化

采集、增强、推流、展示由不同厂商系统拼凑,接口不统一、状态不同步、维护成本高。

方案

⚡AI 实时增强

ONNX Runtime 深度学习推理 + CLAHE 直方图均衡化,GPU 不可用时自动降级到 CPU,确保始终可用。

方案

💬自然语言调度

LLM Agent 将自然语言转为结构化控制指令,智能诊断故障并提供处置建议,变更操作需审批防误操作。

方案

📊多路统一管理

NightVision 视频墙支持 2×2 / 3×3 / 4×4 网格、轮巡与自由布局;Server 端流生命周期一键管理,FPS/延迟/错误率实时展示,Prometheus 全链路可观测(`/metrics` :19102)。

方案

🔌端到端整合

Server/Agent/Client 三层解耦,标准化协议通信,Docker 一键部署,从采集到展示一套系统搞定。

核心能力

从低光照采集到 AI 增强再到 RTMP 推流,端到端的实时视频增强解决方案。

🌙

低光照实时增强

可选后端:histogram / CLAHE / OnnxEnhance(MELENet 等),与 inline-detect 正交,可按路独立开关;基于 ONNX Runtime,CPU/GPU EP 自适应。

🤖

LLM Agent 智能调度

接 OpenAI 兼容端点(开发主用 DeepSeek 云端,本地 llama.cpp + Qwen GGUF 私有化),ReAct function calling + 策略护栏 + ActionConfirm UI,变更操作需人工审批。

📡

RTMP 推流

内置 RTMP 推流,增强/检测后的视频推至 `rtmp://host:1935/live/`,支持 Nginx-RTMP / ZLMediaKit / MediaMTX 中继,Docker 默认带中继。

🖥️

跨平台客户端

基于 Qt/QML + OpenGL 的桌面客户端,支持视频墙展示、实时预览和交互控制。

🐳

Docker 一键部署

`make init && make up` 起 Server + Agent + llama.cpp;默认 GPU 栈(`docker-compose.yml`),无 GPU 用 `docker-compose.cpu.yml` 兜底。

🔌

模块化架构

Server / Agent / Client 三层解耦,通过 WebSocket + TCP JSON 通信,各组件可独立扩展和替换。

系统架构

三层解耦设计,各组件职责清晰,通信协议标准化。

NightLight Architecture
组件技术栈职责
ClientC++ / Qt, QML, OpenGL窗口框架 / 播放渲染 / 业务界面
AgentC++17, llama.cppLLM 推理 / 命令路由 / 会话管理
ServerC++17, FFmpeg, ONNX Runtime采集解码 / 增强处理 / 编解码 / RTMP 推流
Nginx-RTMPNginx, RTMP Module流媒体中转,推流 / 拉流

快速上手

容器化一键部署,支持 GPU 加速;亦可源码级手动构建。

docker-compose.yml
# 构建并启动 Server + Agent 全栈服务
docker compose up -d

# 启用 GPU 加速,叠加 ONNX CUDA / NVENC 运行时配置
docker compose -f docker-compose.yml -f docker-compose.gpu.yml up -d

# 服务探活:校验 Server 健康状态、端口连通性与运行时指标
curl http://xxx.xxx.xxx.xxx:19102/health
build.sh
# Server
cd Server && cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target ServerMainCoreV2 -j 8

# Client
cd Client && cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target nightlight_client_v1 -j 8