suzuran0y/CCTV-Smartphone-AI-Monitoring
本地监控 + AI 视觉 — LAN-based smartphone-powered AI monitoring framework with structured event output for data acquisition and analysis.
Sentinel 实时监控系统
这是什么
Sentinel 是一个开源框架,将普通的 Android 智能手机转变为网络摄像头节点,并将其视频流传输至 PC 端的 Flask 服务器。PC 端托管一个网页仪表板,您可以在其中观看实时 MJPEG 视频、录制分段 MP4/AVI 文件,并(可选)对符合运动触发条件的帧执行基于 AI 的分析。
核心组件
| 组件 | 角色 | 关键技术 |
|---|---|---|
| CamFlow(Android 应用) | 捕获手机摄像头,将每个帧压缩为 JPEG 并 POST 至服务器。 | Android 8+、Java/Kotlin、HTTP 上传 |
PC 服务器(server.py) |
接收帧,将最新图像存储在 FrameBuffer 中,提供 MJPEG 流,录制视频,并运行可选的 AI 监控线程。 |
Python 3.9+、Flask、OpenCV、threading |
| 浏览器仪表板 | 用于实时预览、开始/停止录制、调整参数、查看日志和 AI 事件的 UI。 | HTML/JS、CSS、Flask 模板 |
工作原理(高级流程)
- 启动服务器 –
python server.py启动 Flask,并打印地址(例如http://192.168.1.10:5000)。 - 启动 CamFlow – 应用要求服务器地址,然后持续捕获帧并 POST 至
/upload。 - FrameBuffer – 服务器将最新的 JPEG 保存在内存中;MJPEG 端点(
/stream)将其流传输至任何浏览器。 - 录制 – 后台工作线程从缓冲区读取并写入分段视频文件(可配置 FPS、编解码器、分段长度)。
- AI 触发(可选) – 运动检测模块标记帧;触发时,AI 监控器调用可插拔的视觉模型(例如多模态 LLM 或 CV 模型),并存储结构化的 JSON 事件(
has_person、risk_level、confidence、summary)。 - 仪表板 – 让您调整流 FPS、JPEG 质量、录制设置和 AI 参数(提示模板、运动阈值等),并实时查看日志/事件。
主要功能
- 零成本硬件 – 任何 Android 手机都可成为摄像头节点;无需 IP 摄像头。
- 仅限 LAN 操作 – 所有流量都保留在本地网络中,保护隐私。
- 实时 MJPEG 预览 – 可在任何现代浏览器中查看,无需插件。
- 分段视频录制 – 自动文件轮换以避免大文件。
- 可配置参数 – 流 FPS、上传速率、录制编解码器、AI 触发阈值、提示模板等。
- 分层 AI 处理 – 先进行低成本运动检测,然后可选进行大模型推理以节省计算/API 成本。
- 结构化事件日志 – JSON 记录,用于下游分析或模型训练。
- 可扩展架构 – AI 模块是一个接口;您可以插入任何视觉模型或推理服务。
典型使用场景
| 场景 | 为何 Sentinel 适合 |
|---|---|
| 家庭或实验室监控 | 使用现有手机,本地存储数据,无需云订阅。 |
| 行为分析研究原型 | 易于插入自定义视觉模型并获得结构化 JSON 输出。 |
| 教学分布式视觉系统 | 演示“移动捕获 → PC 处理 → 网页控制”架构。 |
| 小规模数据收集 | 生成同步视频 + 事件 JSON,供后续模型训练。 |
快速入门(快速步骤)
- 克隆仓库
git clone https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring.git cd CCTV-Smartphone-AI-Monitoring - 安装 Python 依赖
pip install -r requirements.txt - 运行服务器
记下打印的python server.pyIP:PORT。 - 在手机上安装 CamFlow(APK 位于
PhoneCamSender/或从 Android Studio 构建),并输入服务器地址。 - 在同一 LAN 上打开浏览器,前往
http://<server_ip>:5000– 您将看到实时仪表板。 - 使用“设置”选项卡启用 AI 监控器、调整阈值并开始录制。
扩展 AI 模块
文件夹 app/ai/ 包含:
ai_ark.py– 一个轻量包装器,调用视觉模型(目前是在线推理 API 的占位符)。ai_monitor_worker.py– 执行状态机(SLEEP → OBSERVE)并写入事件。motion_trigger.py– 简单的帧差异运动检测器。 若要使用不同的模型,请将ai_ark.py替换为将 JPEG 发送至您自己的端点并返回符合预期 schema 的 JSON 负载的代码。
许可证与贡献
- 许可证: MIT – 您可以自由使用、修改和重新分发。
- 欢迎通过 pull request 贡献;此项目遵循典型的开源工作流程。
以上所有信息直接取自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目