 安装教程 —— 把安卓机顶盒变成监控录像主机

 openhardwarelab · 面向普通用户/开发者。约 30–60 分钟。
 用一台吃灰的安卓机顶盒 + 一个 USB 摄像头，做成：直播 + 循环录像 + 手机远程看 + 移动侦测/告警。

---

 0. 你需要

- 一台已 root 的安卓机顶盒（建议 Android 4.4+；本项目在 中兴微 ZX296715 实测）。
- 一个 USB 摄像头（UVC）（普通免驱摄像头即可）。
- 电视/显示器（看画面）、路由器（组局域网）。
- 可选：U 盘 / SD/TF 卡（存录像）、一台手机（看监控/收告警）。

---

 1. 认清你的盒子（1 分钟）

    getprop ro.product.cpu.abi          # arm64 / armeabi-v7a
    getprop ro.build.version.release; getprop ro.build.version.sdk
    cat /proc/meminfo; df -k

记下：架构 / 安卓版本 / 内存 / 分区（决定后面能不能装、swap 放哪个分区）。

---

 2. 打开控制通道（ADB）

盒子开 ADB 调试 → 电脑：
    adb connect 192.168.1.100:5555     # 换成你的盒子 IP
    adb devices
 连不上就按你盒子的说明（有的在「运维调试」里，可能弹随机码）。串口(TTL)是备用生命线。

---

 3. 搭建 Linux 子系统（摄像服务跑在里面）

摄像机服务用 Python3 + ffmpeg，建议放在盒子的 Linux chroot 里跑：

1. 准备一个 Ubuntu 根文件系统镜像，放到盒子 /sdcard/linux.img。
2. losetup + mount 挂到 /data/linux。
3. 在子系统里装依赖：
   sh
   apt-get update
   apt-get install -y python3 python3-pip ffmpeg openssh-server ntfs-3g
    要用「物体识别」再加： pip3 install onnxruntime

 详细见 开发者资料/系统改造手册.md 的「Linux 子系统」。

---

 4. 部署服务（一键或手动）

一键（电脑上，切到安装文件目录）：
    ./一键安装.sh 192.168.1.100

手动：把安装文件里的脚本推进子系统：
    adb push 摄像机服务.py   /data/linux/root/cam.py
    adb push 监控守护.py     /data/linux/root/monitor.py
    adb push 物体识别.py     /data/linux/root/det.py        # 可选
    adb push 画面检测.py     /data/linux/root/look.py
    adb push 局域网互传.py   /data/linux/root/transfer.py
    adb push 系统工具服务.py /data/linux/root/boxctl.py

---

 5. 插摄像头、开播

- 把 USB 摄像头插到盒子 USB 口（这个盒子对 USB 口挑：不行就换另一个口/用带供电的 HUB）。
- 启动服务后，浏览器打开 http://<盒子IP:8891/ → 看到直播画面。
- 服务无需手动开：由 3-开机自启.sh 开机拉起（见第 8 步）。
- 盒子屏幕：安装 桌面.apk（已改为开机直进监控画面）后，开机就直接是监控界面，不再先进桌面；设置都在监控页面里（点格子进单路页可设录像/清晰度/识别）。

页面能做什么：
- 首页 = 4 宫格（多路摄像头总览）→ 点格子进单路页（录像开关 / 清晰度 / 抓拍 / 识别）。
- 录像回看：按时间检索、网页逐帧回放。
- 手机扫码看：页面有二维码，扫码即进（局域网 / 公网两版）。
- 告警截图：命中目标（人/车…）自动存图 + 可推送手机。

---

 6. 录像存储（内部 / SD卡 / U盘）

- 默认：内部存储 /mnt/sdcard/cctv，30 秒一段，空间不足自动覆盖最旧。
- 外置盘：插 SD/TF 卡或 U 盘后，服务会优先把录像写到外置盘；首页/单路页显示
  💾 录像盘[标签] 总/已用/空闲 · 已录N段 ≈ 时长 · 可再录 ≈ 时长。
- 清晰度档位（越长录像越省空间）：高清 640×480 · 标准 480×360 · 省空间 320×240 · 经济 256×144 · 极省 160×120。在单路页「清晰度」里一键切换。

---

 7. 手机远程看（不在家也能看）

- 同一局域网：手机浏览器直接开 http://<盒子IP:8891/。
- 公网：服务里集成了 Cloudflare 隧道，会生成一个公网地址（见「手机扫码」页的「互联网」二维码）。地址重启可能变，看页面二维码//root/tunnel.url。
- 访问默认要账号密码（本机 127.0.0.1 免密）；账号在 /root/cam.set 里改。

---

 8. 开机自启 + 兜底

1. 把 3-开机自启.sh 放到 /data/startlinux.sh，4-开机兜底.sh 放到 /data/bootfix.sh。
2. 在盒子 init 里加一行：
   sh
   sh /data/startlinux.sh &

3. 重启复查：子系统已挂、cam/monitor/look/transfer/boxctl 都在跑、盒子开机直接进入监控画面（不再进桌面）。

 兜底脚本会处理「开机卡在升级弹窗」的情况，并确保监控画面在前台（不再拉桌面图标）。

---

 完成！日常使用

- 手机/电脑开 http://<盒子IP:8891/ 看直播与回放。
- 人/车等目标出现 → 自动存告警图，可推送手机（见「告警推送」文档）。
- 录像循环覆盖，不用手动清理。

---
 可选：物体识别 & 告警推送
- 物体识别：本地 YOLO（CPU），命中 人/车… 就记事件 + 存告警图。用 物体识别.py + 识别模型-yolov8n_416.onnx。
- 推送手机：改 /root/alert.cfg 填你的通知服务（ntfy / Bark / 服务号…），命中目标即推送（含告警图直链）。

---
—— openhardwarelab
