# 赵府智家系统架构 ## 部署与职责 系统运行于自己的 Ubuntu 小电脑,提供局域网和 Tailscale 网页入口。第一阶段是视觉模块。管理程序、SQLite 和 MediaMTX 在同一主机运行,使用独立服务用户;网页只访问管理程序,设备凭据与媒体管理接口留在服务端。 摄像头与录像机继续在其原有网络工作。实时画面可直接从摄像头取流,也可由录像机提供;读取哪个位置的历史录像必须显式标明。录像机原有录像回放需要设备型号对应的检索、回放适配器。 ## 对象关系 ```text 空间档案(家庭 / 公司 / 其他) ├─ 地区:省、市、区县、街道 ├─ 地址:小区或园区、楼栋、单元、楼层、门牌 ├─ 所属:家庭或单位 ├─ 摄像头对象(稳定 ID、品牌、型号、序列号、安装位置) │ ├─ 镜头通道 1 → 主码流 / 子码流 │ └─ 镜头通道 2 → 主码流 / 子码流 └─ 录像机对象(地址、接入驱动、账号、空间引用) 每个镜头通道分别关联: 实时来源:直接摄像头 / 录像机 录像来源:本机 / 录像机(可独立于实时来源) ``` ## 接入层 当前 RTSP 负责实时视频,ONVIF 负责读取设备身份、媒体配置、独立视频源及主子码流地址。不同品牌使用相同对象结构,路径和能力由设备返回值或对应驱动确定;不按品牌名字保证所有型号兼容。当前品牌驱动只提供路径模板,自动摄像头配置读取支持 ONVIF Media v1。 主码流用于清晰预览和可选本机录像。界面只显示主码流与子码流两个选项,默认主码流。子码流预览由每路子码流经 FFmpeg 转为 H.264 / AAC;MediaMTX 的 runOnDemand 仅在观看时启动受限分辨率的转码进程,发布权限限定为回环地址的兼容预览路径。高清兼容预览读取原始主码流,经 Intel VAAPI 完成解码、1080p 缩放和 H.264 编码,最高 15 帧/秒;无可用硬件时明确失败,不自动启动多路软件高清转换。原始编码直出不作为网页预览选项,原始主码流继续用于录像及转码输入。系统目前不修改摄像头或录像机设置,不自动导入不存在的通道,不把服务可达当成画面接通。 ## 管理 API 所有数据接口(除会话状态与健康检查)需要管理员 Cookie 会话。写接口接受 JSON,检查同源请求。 | 接口 | 用途 | | --- | --- | | GET /api/session | 初始化、登录状态 | | POST /api/setup、/api/login、/api/logout | 管理员会话 | | GET /api/state | 对象、镜头实际码流状态、存储状态 | | POST /api/sites | 保存结构化空间档案 | | POST /api/assets | 保存实体摄像头对象 | | POST /api/recorders | 保存录像机与连接凭据 | | POST /api/cameras | 保存镜头通道(早期接口名保留) | | POST /api/onvif | 只读设备身份、视频源与码流配置 | | POST /api/discover | 有界局域网 RTSP 探测 | | POST /api/storage | 本机录像容量与保留策略 | | GET /api/recordings | 本机录像时段 | | GET /media/live/... | 登录鉴权后的 HLS 代理 | | GET /media/playback | 本机录像回放、下载代理 | ## 当前交付与后续 本阶段实现独立运行、空间建模、三类视觉对象、实时视频接入和本机可选录像。摄像头真实接入结果由部署记录和主机运行状态说明。 下一阶段可加入具体录像机的历史回放适配器;随后扩展其他设备类型和联动规则。PTZ、语音对讲、AI 检测、多用户细分权限目前没有实现,不作为已具备的能力展示。 配置写入 SQLite 并生成运行时媒体配置,录像数据独立存储。当前为单机模式;升级前备份整个数据目录。凭据和录像不包含在公开源码中。