让NAS变身NVR并接入HA!Docker部署人工智能监控方案frigate、搭建AI安防系统,开箱即用的NAS监控方案!
引言
不少朋友会对于NAS的监控套件有所依赖,或者想借助NAS来实时存储监控摄像头的录像,所以本期介绍一个开源免费的AI智能监控方案frigate。

本期内容稍长,以下是大纲,请按需跳转查阅,看完就可以成功部署和上手frigate了~
frigate监控方案能做什么
出场设备一览
frigate部署
frigate初始化:后台、添加摄像头、配置修改
录像文件保存位置
进阶玩法推荐
结尾
frigate监控方案能做什么
lakeblackshear/frigate 是一个开源项目,主要用于视频监控和物体检测,它结合了机器学习和计算机视觉技术,提供了实时的对象检测和人脸识别功能,适用于家庭安全、监控和自动化等场景。

主要功能如下:
1、可以无缝接入支持ONVIF/RTSP协议的摄像头,实时查看或回放录像,亲可将实时录像保存到NAS本地,实现NAS当NVR的目的;
2、普通摄像头接入后,可以借助frigate的AI功能实现物体检测、分析监控画面并实时提醒,还能划定安全区域等等,让不支持AI的摄像头也能实现智能识别;

3、开源免费,摄像头数量不限,不像品牌NAS的监控套件有数量限制或付费要求,完美平替;
4、可以接入HomeAssistant系统实现智能联动,这个是真的强啊,玩HA智能方案的朋友有福了!

出场设备一览
本期使用绿联DXP4800来进行docker下的部署演示,自发布以来,一路见证其成长,目前最新版UGOS Pro系统已经非常好用了!

如果你正在寻找一台简单易用、无需复杂设置的NAS,绿联DXP系列NAS是不错的选择,以我手上的DXP4800为例,它搭载英特尔四核N100处理器,支持4个3.5寸硬盘和2个M.2固态硬盘,配有双2.5G网口,还能扩展内存,此外铝合金一体机身颜值出众,在各种使用场景下表现出色。

至于各位关心的全新UGOS Pro系统,经历多个大版本更新后也日益完善和稳定了,可以放心冲,支持离线大模型的AI智能相册,绿联可以说是首个支持的,并且做得还不错;以及支持原盘播放、蓝光菜单、自动整理的影视中心目前也是很强了,在影音体验方面UGOS Pro可以轻松胜任。

并且新系统的docker和虚拟机也日益完善,比如说支持macvaln网络、虚拟机支持桥接网络实现宿主机和虚拟机互通互联,可以说各种功能应有尽有,UGOS Pro完美兼顾了易用专业的特点,也实现了全面、自由的影音娱乐功能。

虽说DXP4800是DXP系列NAS中的入门机器,但和其它品牌的消费级旗舰NAS对比却一点也不逊色,完美覆盖各种场景下的NAS需求,各位可以按需选择。

话不多说,咱们进入本期正题~
frigate部署
常规docker部署命令
只要你的NAS支持docker,并且直接SSH的话,那么都可以直接使用以下docker run命令快速部署frigate,其中-p部分的端口号请自定义修改,改每行的第一组数字为当前NAS未被占用的端口号即可;另外-v部分的/path/to/your/storage和/path/to/your/config请改成当前主机真实路径进行映射,分别保存容器配置文件和录像存储,其它的话可默认,打开SSH粘贴运行即可。
docker run -d
--name frigate # 容器名称,可自定义
--restart=unless-stopped
--mount type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000 # 开启缓存,避免硬盘频繁读写
--device /dev/dri/renderD128 # 核显直通进行解码
--shm-size=64m
-v /path/to/your/storage:/media/frigate # 容器名称,/path/to/your/storage修改为主机真实路径,即存放录像的文件夹
-v /path/to/your/config:/config # 容器生成的配置文件,/path/to/your/config修改为主机真实路径
-v /etc/localtime:/etc/localtime:ro
-e FRIGATE_RTSP_PASSWORD='password'
-p 8971:8971 # 这4个-p开头的端口请修改为当前主机未被占用的端口即可,访问时使用https加IP加8971对应映射的端口访问
-p 8554:8554
-p 8555:8555/tcp
-p 8555:8555/udp
ghcr.io/blakeblackshear/frigate:stable
docker-compose部署
当然,最方便的还是通过docker-compose方式部署了,因为这种方式是最简单的,确保port部分的每行的第一个端口未被占用即可,如占用可自定义修改,而且里面涉及到自定义修改的位置已经加了#注释解释说明,请按提示来操作。
version: "3.9"
services:
frigate:
container_name: frigate
privileged: true # 超级权限,默认即可
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "64mb"
devices:
- /dev/dri/renderD128:/dev/dri/renderD128 # 直通核显的,默认即可
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config:/config # frigate生成的配置文件存放位置
- ./storage:/media/frigate # frigate生成的录像保存位置,可以自定义
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports: # 请修改以下每行的第一个端口为未被占用的端口即可,确认都没占用,可不用修改
- "8971:8971"
- "5555:5000" # frigate的后台UI界面端口,请把5555修改为你当前未占用的端口即可
- "8554:8554" # RTSP feeds流的端口
- "8555:8555/tcp" # WebRTC over tcp端口
- "8555:8555/udp" # WebRTC over udp端口
environment:
FRIGATE_RTSP_PASSWORD: "password"
#以下部分为限制容器对于CPU和内存的最高占用率,不需要可删除,建议开启,避免占用过多资源
deploy:
resources:
limits:
cpus: '0.50' # 如N100处理器4核4线程,0.5代表最高占用2核心,0.25代表1核
memory: 1024M
在这里不得不提一下绿联UGOS Pro系统的docker应用了,目前已经完美支持compose编排部署项目了,在众多NAS系统中,绿联docker的UI而已也是超好看的。

Docker Compose 允许用户通过一个定义文件(通常是 docker-compose.yml)来描述和管理多容器应用,它简化了部署多容器服务的流程,尤其是在需要协同工作的多个服务时。
绿联NAS部署frigate有多简单,直接点击『项目』-创建,将前面的命令直接粘贴到Compose配置框中,项目名称随意命名,存放路径按默认生成的即可,点击立即部署。

等它拉取镜像完毕自动部署,当看到Created字眼出现,点击完成,frigate就部署完成了,是不是很简单。
PS:请配置好docker加速或代理,不然会拉取不成功~

在项目一栏中就可以看到frigate显示运行中了,双击后可以进入项目内部查看详情。

绿联compose完美支持二次编辑和修改,比如说部署完毕后发现端口有冲突,可以直接在Compose配置中修改端口、映射文件夹、镜像版本等等都能修改,不丢失原有配置,对于喜欢折腾、调试的玩家来说非常友好,毕竟推倒重建太麻烦了!

到此就成功部署frigate了,下面来进行初始化吧~
frigate初始化
后台管理界面
现在打开浏览器,通过访问你NAS的内网IP地址加5555端口(如果你没修改的话)号即可进入frigate后台了,如下图所示,因为我们还没添加摄像头,所以会提示No frames have been received,遗憾的是frigate目前还没汉化版本,所以是全英文的,不过添加摄像头也不难,下面就来演示一下如何添加。

确定摄像头是否能添加
能否把你的摄像头添加到frigate中实现查看、识别和录像,首先要确定摄像头是否支持,在确定前首先你的摄像头可能需要支持以下两种协议,即ONVIF和RTSP。
ONVIF(Open Network Video Interface Forum)和 RTSP(Real-Time Streaming Protocol)都是用于网络视频传输的协议,但它们的功能和用途不同。

ONVIF:
定义:ONVIF 是一个标准化的协议,专为网络视频设备(如摄像头)设计,旨在实现不同设备之间的互操作性。
功能:支持设备发现、配置、控制(如摄像头的转动、变焦等),并传输视频流。
用途:主要用于网络摄像头的管理和控制,确保不同品牌的设备可以兼容使用。

RTSP:
定义:RTSP 是一个应用层协议,用于控制音视频流的传输,主要用于多媒体播放和实时传输。
功能:仅提供视频流的播放、暂停、停止等控制功能,不涉及设备管理或配置。
用途:主要用于实时视频的流传输,例如在网络摄像头上通过 RTSP URL 来获取视频流。
一般情况下,如果摄像头支持 ONVIF,它通常也会支持 RTSP,因为 ONVIF 协议包含了对 RTSP 流的支持作为传输视频流的一种方式,所以只要能确定你手上的摄像头支持ONVFI,那么就可以接入frigate中。

一般来说,如海康、TP-LINK、水星的主流摄像头都是支持ONVIF的,我目前家里的几个摄像头基本是TP和水星的,完美支持ONVIF协议,如果不确定你的摄像头是否支持ONVIF或RTSP,请联系官方客服查询或去其官网查询。

就以我手上的TP-LINK/水星为例,进入摄像头的后台,在网络设置-端口这里就可以查看RTSP端口为554,说明它支持接入frigate,记下。

此外还需要确定RTSP流的地址,直接搜索引擎去查,加上品牌名,比如说TP RTSP地址,这不就查找到了。
所以,我这个水星(TP的低端品牌)摄像机的RTSP地址就是:rtsp://摄像头用户名:摄像头密码@摄像头IP:摄像头RTSP端口/stream1
其中stream1是主码流,高清,优先使用这个,当然,其它品牌摄像头可能不同,具体请自行确定,随机应变。

确定摄像头RTSP地址后,咱们可以修改一下frigate的配置文件进行摄像头添加了。
配置文件修改
frigate的配置文件如下图所示,在其config文件夹下找到config.yaml打开编辑即可。

默认是这样的内容,我们需要修改一下。

为了演示方便,直接贴出通用的配置文件吧(感谢热心大佬奉献)~如下所示,已经对各项参数做了详细标示,它们作用是什么都有写,请随机修改。
或者直接修改cameras:部分的IP和user、password为你当前摄像头的配置即可,摄像头IP和摄像头账密就不用问怎么来了吧,除非这个摄像头不是你的,修改完后,完整复制。
mqtt:
enabled: false
ffmpeg:
hwaccel_args: preset-vaapi
# 录制配置示范
record:
enabled: true
retain: # 所有录像保留时长,我设置3天
days: 3
mode: all
events:
pre_capture: 1 # 录像前提前时间
post_capture: 3 # 录像后延长时间 3 秒
retain: # 检测的录像保留天数
default: 10
# 检测快照保留时长,单位为天数
snapshots:
enabled: true
retain:
default: 30
# 默认检测物体:人
objects:
track:
- person
# - car
# 摄像头配置,onvif部分不是必须,使用rtsp也可
cameras:
tp-link_camera_outside01: # 自定义摄像头名称
# 摄像头IP地址和ONVIF端口号,不同品牌的不同,请查找后随机修改,有ONVIF可使用PTZ,如摄像头不支持,此部分可不要
onvif:
host: 192.168.10.4
port: 2020
# 摄像头账号和密码,请随机修改
user: admin #摄像头账号
password: password #摄像头密码
# 以下rtsp://部分的admin和password请替换为摄像头账号、密码
ffmpeg:
inputs:
- path: rtsp://admin:password@192.168.10.4:554/stream1
roles:
- detect
- record #人形检测,不要可注释掉
detect:
width: 1280
height: 720
fps: 5
version: 0.14
将其粘贴到config.yaml中完整替换原有配置文件,点击保存,绿联支持yaml在线编辑,挺方便的。

接着重启一下frigate。

现在,在浏览器中刷新一下frigate后台,发现有画面出现了,第一个摄像头就添加完成了,继续添加的话就复制cameras:下的tp-link_camera_outside01: # 自定义摄像头名称这一段添加就行,摄像头名称记得别一样,就可以继续添加多个摄像头了,目前好像是没有限制的。

点击进去可以进行全屏查看,可以发现右上角的人形检测和录像、快照都打开了。

不过人形检测有点消耗CPU资源,因为实时检测这些会需要算力,如果NAS处理器性能不好,会占满,所以这也是为什么compose部署有做了资源限制,如果人形检测不是刚需,建议关闭,或者在前面配置文件中把roles中的detect关键字注释掉就不会自动开启人形检测了。

点击左上角的History可以回看视频,可以拉动右侧时间轴进行回话,挺方便的。

录像文件位置
录像保存的位置就是你前面映射的storage那个目录,如果你没更改,那么它保存在如下图所示的位置,做了摄像头名称、日期区分,并且是以MP4格式保存的。

打开播放,一切正常,它基本是以几分钟为一小段进行保存,而且前面配置文件中已经设置了最长保存录像天数,超过这个天数的会自动删除,所以不用担心会占满NAS空间,当然你也可以自定义保存时长,只要你硬盘容量足够大,保存多久都是可以的。

进阶玩法介绍
点击右下角的齿轮-Documeentaion可以进入官方文档,不过遗憾的是全英文,还没有中文版本。

不过可以借助浏览器自带的翻译功能进行查看,虽然翻译有些生硬,但能看懂还是没问题的。

frigate比较强的点在于可以无缝集成到HA中,如果你刚好使用NAS部署了HomeAssistant,那么可以玩出更多花样来。

更多进阶文档配置可以查看官方介绍,可自定义的设置实在是太多了,但是如果你和我一样只是接入摄像头进行检测、录像之类的话,使用我前面提供的配置就足够了,喜欢折腾的可以深入研究一下。

如果要想实现远程登录frigate,可以查看我往期的远程方案Lucky,刚好适用!
结尾
通过前面的演示,成功部署了frigate并实现了摄像头接入,这样就可以把摄像头的录像文件保存到NAS本地,实现类似于NVR的效果,甚至还能接入HA实现智能联动,这是常规NVR所没有的效果,有此类需求的朋友可以尝试部署一下,不过这个方案对于NAS性能有一定要求,还好DXP4800的N100处理器性能够好,应对它绰绰有余!

最后,如果是家用为主、注重性价比、简单易用,那么可以看看绿联的DXP2800和DXP4800这两款NAS,不管是性能、做工还是系统,都很不错。
关于绿联NAS的更多玩法可参考我往期的玩机教程,比如部署自动化影音联动方案、All in One方案、挂载在线网盘方案等等~

那么本篇就到此结束,喜欢的朋友请关注、点个赞,咱们下期见!

我是阿皮啊-
校验提示文案
值友9933136667
校验提示文案
看看便宜货
校验提示文案
叽呱啾
校验提示文案
再买苏宁的东西我是狗
校验提示文案
安太阳
校验提示文案
我不买买买
校验提示文案
morok2008
校验提示文案
johnsonge8888
校验提示文案
啡常小黑
校验提示文案
onefish51
校验提示文案
普通女孩日常分享
校验提示文案
003大叔
校验提示文案
liu164775
校验提示文案
山月不知心底事
校验提示文案
摩羯不着调
校验提示文案
荒银大飙客
校验提示文案
樱桃小熊子
校验提示文案
笔点酷玩
校验提示文案
青椒炒肉5178
校验提示文案
少花钱发家致富
校验提示文案
疯狂码撕客
校验提示文案
青椒炒肉5178
校验提示文案
笔点酷玩
校验提示文案
onefish51
校验提示文案
樱桃小熊子
校验提示文案
啡常小黑
校验提示文案
荒银大飙客
校验提示文案
johnsonge8888
校验提示文案
值友9933136667
校验提示文案
摩羯不着调
校验提示文案
morok2008
校验提示文案
iYYiDD
校验提示文案
山月不知心底事
校验提示文案
liu164775
校验提示文案
003大叔
校验提示文案
安太阳
校验提示文案
叽呱啾
校验提示文案
看看便宜货
校验提示文案
我不买买买
校验提示文案