飞牛NAS监控方案:Frigate+Docker实现AI人形检测与远程访问
1. 飞牛NAS监控方案的整体设计思路
1.1 为什么要在NAS上跑监控
很多人买了飞牛NAS之后,第一反应是拿来存电影、备份照片、做家庭文件共享。用了一段时间就会发现,这玩意儿24小时开机、功耗低、硬盘容量大,只拿来存文件实在有点浪费。于是不少人开始琢磨:能不能让它顺便把家里的监控也管起来?
这个想法其实非常自然。传统监控方案要么买一套品牌NVR加摄像头,要么用云存储服务按月付费。前者一次性投入不小,后者长期算下来更贵,而且视频数据放在别人服务器上,心里总归不太踏实。飞牛NAS本身就是一个低功耗常开设备,硬盘空间充裕,把它变成监控录像的存储中心,逻辑上完全说得通。
具体来说,在飞牛NAS上做监控,核心解决的是三个问题:视频流的接入与录制、录像文件的存储与管理、远程实时查看与回放。这三个需求对应到技术层面,就是需要一套能拉取RTSP流、能转码或直接存盘、能提供Web或App访问的软件方案。目前社区里讨论最多的组合是Frigate加上飞牛的Docker环境,也有用Zoneminder、Shinobi的,但Frigate因为对硬件加速支持好、AI检测能力强,成了很多人的首选。
1.2 飞牛NAS做监控的先天优势与短板
先说优势。飞牛NAS通常配的是低功耗x86平台,比如N100、N305这类处理器,TDP在6到15瓦之间,7×24小时运行电费几乎可以忽略。硬盘方面,很多人上了4盘位甚至更多,单盘4T起步,存几十路摄像头的录像绰绰有余。系统层面,飞牛OS基于Linux,Docker支持完善,跑Frigate这类容器化应用非常方便。网络方面,一般家庭NAS都接在千兆交换机上,局域网内拉几路1080P的RTSP流毫无压力。
短板也很明显。第一,飞牛NAS的核显性能有限,如果要做AI物体检测,比如识别人、车、猫狗,需要用到Intel核显的OpenVINO加速,低端型号可能跑不动太多路。第二,NAS的CPU性能不强,如果摄像头数量多、分辨率高,软解转码会直接把CPU吃满。第三,远程访问依赖网络环境,没有公网IP的话需要额外方案。第四,存储策略需要仔细设计,否则硬盘很快被写满,或者频繁写入导致硬盘寿命下降。
注意:监控录像的写入模式是持续小文件写入,对硬盘的负载和普通文件存储完全不同。建议用专门的一块硬盘做监控存储,不要和重要数据混在一起。
1.3 方案选型的核心考量
在飞牛NAS上搭监控,选什么软件、怎么部署,主要看几个维度:摄像头数量、分辨率、是否需要AI检测、预算、以及你愿意折腾的程度。
如果只是两三路摄像头,只需要录像和回放,对AI没需求,那其实用飞牛自带的Docker跑一个轻量级NVR就够了,比如Shinobi或者MotionEye,资源占用低,配置简单。如果想要人形检测、车辆识别、甚至人脸识别,那Frigate是更好的选择,它内置了TensorFlow和OpenVINO,配合Intel核显可以做到实时检测。如果摄像头超过8路,或者有4K分辨率的头,那就需要考虑用独立显卡或者换更强的硬件平台了。
存储方面,Frigate支持直接写硬盘,也支持写到网络存储。在飞牛NAS上,建议直接把监控录像存到NAS的存储池里,通过Docker的volume映射进去。这样录像文件可以通过飞牛的文件管理直接访问,也方便做快照和备份。
2. 核心细节解析与实操要点
2.1 摄像头接入:RTSP流的获取与配置
不管用什么软件,第一步都是把摄像头的视频流接进来。目前市面上绝大多数网络摄像头都支持RTSP协议,这是最通用的方式。以常见的几个品牌为例,RTSP地址格式大致如下:
- 海康威视:
rtsp://用户名:密码@IP地址:554/Streaming/Channels/101 - 大华:
rtsp://用户名:密码@IP地址:554/cam/realmonitor?channel=1&subtype=0 - TP-Link:
rtsp://用户名:密码@IP地址:554/stream1 - 小米:部分型号支持RTSP,需要在米家App里手动开启,地址通常是
rtsp://IP地址:554/live/ch00_0
这里有个坑要注意:很多摄像头默认只开主码流,分辨率高、码率高,直接拉流对NAS压力大。建议在摄像头后台把子码流打开,子码流一般是720P或者480P,码率低很多,用来做实时预览和AI检测足够了。录像的时候再调主码流,这样兼顾画质和性能。
在Frigate的配置文件里,摄像头的配置大概长这样:
这段配置的意思是:主码流用来录像,子码流用来做AI检测,检测分辨率设为1280×720,每秒抽5帧做分析。为什么是5帧?因为物体检测不需要30帧那么高的帧率,5帧足够判断有没有人经过,同时大幅降低CPU和GPU的负载。
2.2 硬件加速:让Intel核显真正干活
飞牛NAS的CPU大多是Intel的,自带核显。这个核显在监控场景里有两个用途:一是视频解码,二是AI推理加速。如果不做任何配置,Frigate默认用CPU软解,一路1080P的流就能吃掉一个核心,几路下来CPU直接满载。
要让核显参与解码,需要在Docker启动参数里把核显设备映射进去: