>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

如何将旧安卓手机变成智能AI监控系统

几乎每个家庭都有一部旧安卓智能手机在抽屉里积灰。屏幕完好,摄像头也不错,但电池只能撑半天,或者处理器跑不动现代应用。通常这些设备要么转给亲戚,要么被彻底遗忘。最近我发现了一个有趣的仓库 CCTV-Smartphone-AI-Monitoring(作者称该系统为Sentinel),它提供了一种让这部旧设备重新发挥作用的方式。

该项目通过本地网络从智能手机捕获视频,在PC上运行录制,并连接多模态神经网络来识别画面中发生的情况。

System banner

Sentinel的内部架构

将智能手机变成监控摄像头的想法并不新鲜,但大多数现成方案都有两个问题:要么绑定付费的中国云服务,要么只提供简陋的RTSP流而没有任何像样的分析功能。Sentinel同时解决了这两个问题。

该系统分为两个部分:

  1. CamFlow — 一个适用于Android 8.0+的轻量级应用,捕获摄像头画面并通过HTTP POST将JPEG帧发送到服务器。
  2. Python服务器组件(Flask + OpenCV)— 接收流、维护帧缓冲区、组织浏览器流传输、将存档写入磁盘并管理AI调用。

所有视频和日志都严格保留在本地网络中。只有在您决定连接云端神经网络进行事件分析时,才会向外发送单个帧。

Dashboard and AI monitoring interface

令牌高效管道的工作原理

将25fps的视频流直接输入现代多模态神经网络,会让任何开发者付出不菲的代价。Sentinel作者采用了经过验证的两层方案:

首先,基于OpenCV的传统计算机视觉负责主要工作。motion_trigger模块计算连续帧之间的差异。只要房间里没有动静,服务器就保持在 SLEEP 状态,不消耗API资源。

一旦运动超过设定阈值,系统就切换到 OBSERVE 状态。此时视觉模型开始工作。它分析帧、检查是否有人、评估风险等级,并返回严格的JSON:

如果有人在画面中停留超过 Dwell Threshold 阈值的时间,事件就会被记录到 ai_events.jsonl 数据库并显示在仪表盘上。当运动停止时,系统等待 End Grace 的停顿时间,然后返回睡眠状态。

System operation process

项目的主要特点

无需插件的视频流传输。Web界面通过MJPEG提供实时画面。家庭Wi-Fi下的延迟极低,任何浏览器都能打开视频而无需安装软件。

灵活的模型提供商集成。该项目最初基于中国火山引擎Ark构建,但在1.1版本中作者添加了通用客户端。现在您可以连接OpenAI(GPT-4o-mini)、Google Gemini、DashScope(通义千问VL)、SiliconFlow,或者使用OpenAI兼容API的本地网关。

通过提示词自定义行为。仪表盘设置中包含长期上下文(Scene Profile)和操作重点(Session Focus)的字段。您可以直接在Web界面中编写:"这是实验室走廊。如果有人搬运箱子或在门口停留超过10秒,请注意。"

自动网络发现。CamFlow应用无需手动输入PC的IP地址——它可以通过UDP广播找到正在运行的服务器。

存档分段。视频按时间分块本地录制(例如5或10分钟的片段),可选择avc1、mp4v或XVID编解码器。

CamFlow mobile app interface

如何部署项目

您需要一台装有Python 3.9+的PC和一部运行Android系统的智能手机。

克隆仓库并安装依赖:

依赖包括标准套件:Flask、OpenCV、NumPy和Ark SDK客户端。

启动服务器:

控制台会显示本地地址(如浏览器的 http://127.0.0.1:5000/)和智能手机的网络IP http://192.168.x.x:5000/

在手机上安装 PhoneCamSender/CamFlow-v1.0.0-beta.apk 文件夹中的APK(或者通过Android Studio构建项目——源码是开放的)。启动应用,授予摄像头权限,连接Wi-Fi,然后输入服务器IP。

出于安全考虑,PC仪表盘上默认禁用帧捕获。按下 Enable Ingest 按钮,实时流就会出现在浏览器中。

Dashboard parameter settings

连接您自己的AI提供商

如果想启用AI分析,请在仪表盘右侧面板中打开 AI Monitoring。选择相应的Provider,指定 Model ID,然后输入API密钥。

例如,要与兼容的本地服务器或OpenAI配合使用,只需填写配置:

参数也可以通过环境变量传递(AI_PROVIDERAI_MODELAI_API_KEY)。服务器会验证模型响应,确保字段结构不会破坏Web界面。

适用场景

Sentinel非常适合小规模本地实验:

  • 监控无法将视频流传输到第三方云服务的工作坊或实验室。
  • 收集带有异常情况文本描述的标注数据集。
  • 在公寓中观察宠物并接收结构化的警报通知。
  • 学习如何在不过度消耗成本的情况下,将传统CV(运动检测)与重型LLM/VLM相结合。

总结

这个项目最终成为一个简洁实用的工程原型。没有笨重的框架或多余的复杂设计:清晰的 FrameBuffer 架构、可用的pytest测试,以及开箱即用的功能完整的Android客户端。

如果您一直在寻找一个理由来利用旧手机并尝试实时多模态模型,请查看 suzuran0y/CCTV-Smartphone-AI-Monitoring 仓库。

相关项目