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 模板

工作原理(高级流程)

  1. 启动服务器 – python server.py 启动 Flask,并打印地址(例如 http://192.168.1.10:5000)。
  2. 启动 CamFlow – 应用要求服务器地址,然后持续捕获帧并 POST 至 /upload。
  3. FrameBuffer – 服务器将最新的 JPEG 保存在内存中;MJPEG 端点(/stream)将其流传输至任何浏览器。
  4. 录制 – 后台工作线程从缓冲区读取并写入分段视频文件(可配置 FPS、编解码器、分段长度)。
  5. AI 触发(可选) – 运动检测模块标记帧;触发时,AI 监控器调用可插拔的视觉模型(例如多模态 LLM 或 CV 模型),并存储结构化的 JSON 事件(has_person、risk_level、confidence、summary)。
  6. 仪表板 – 让您调整流 FPS、JPEG 质量、录制设置和 AI 参数(提示模板、运动阈值等),并实时查看日志/事件。

主要功能

  • 零成本硬件 – 任何 Android 手机都可成为摄像头节点;无需 IP 摄像头。
  • 仅限 LAN 操作 – 所有流量都保留在本地网络中,保护隐私。
  • 实时 MJPEG 预览 – 可在任何现代浏览器中查看,无需插件。
  • 分段视频录制 – 自动文件轮换以避免大文件。
  • 可配置参数 – 流 FPS、上传速率、录制编解码器、AI 触发阈值、提示模板等。
  • 分层 AI 处理 – 先进行低成本运动检测,然后可选进行大模型推理以节省计算/API 成本。
  • 结构化事件日志 – JSON 记录,用于下游分析或模型训练。
  • 可扩展架构 – AI 模块是一个接口;您可以插入任何视觉模型或推理服务。

典型使用场景

场景 为何 Sentinel 适合
家庭或实验室监控 使用现有手机,本地存储数据,无需云订阅。
行为分析研究原型 易于插入自定义视觉模型并获得结构化 JSON 输出。
教学分布式视觉系统 演示“移动捕获 → PC 处理 → 网页控制”架构。
小规模数据收集 生成同步视频 + 事件 JSON,供后续模型训练。

快速入门(快速步骤)

  1. 克隆仓库
    git clone https://github.com/suzuran0y/CCTV-Smartphone-AI-Monitoring.git
    cd CCTV-Smartphone-AI-Monitoring
    
  2. 安装 Python 依赖
    pip install -r requirements.txt
    
  3. 运行服务器
    python server.py
    
    记下打印的 IP:PORT。
  4. 在手机上安装 CamFlow(APK 位于 PhoneCamSender/ 或从 Android Studio 构建),并输入服务器地址。
  5. 在同一 LAN 上打开浏览器,前往 http://<server_ip>:5000 – 您将看到实时仪表板。
  6. 使用“设置”选项卡启用 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;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目