Docker 玩法

飞牛NAS Docker部署智能监控系统:三步搞定实时视频分析

你是否曾为家中或办公室的监控摄像头只能被动录像而烦恼?每次翻看回放,都像是在大海捞针,只为找到那几秒关键画面。而市面上的智能监控方案要么价格昂贵,要么依赖云服务,隐私和成本都让人头疼。今天,我将带你利用飞牛NAS强大的Docker功能,免费部署一套开源的智能监控系统(Frigate),实现实时物体检测、人脸识别和事件推送,让你的NAS从“存储仓库”升级为“AI大脑”。

为什么选择Frigate + 飞牛NAS?

Frigate是一款专为实时监控设计的开源NVR(网络视频录像机),它利用本地硬件加速(如Intel核显的QSV或NVIDIA显卡)进行AI推理,延迟极低。与飞牛NAS结合,优势明显:

  • 隐私安全:所有视频和AI分析数据都存储在本机,不经过第三方云。
  • 成本极低:只需消耗NAS的闲置算力,无需订阅费。
  • 高度可定制:支持自定义检测区域、通知规则,甚至接入Home Assistant实现全屋自动化。

飞牛NAS基于Debian系统,自带Docker环境,且对Intel核显支持良好,是运行Frigate的理想平台。

第一步:准备环境与硬件检查

在开始前,请确认你的飞牛NAS满足以下条件:

  • CPU:建议Intel 4代以上(支持QSV)或带NVIDIA GPU,否则CPU推理会占用过高。
  • 内存:至少4GB,推荐8GB。
  • 存储:预留20GB以上空间用于Docker镜像和录像。
  • 摄像头:支持RTSP协议的IP摄像头(绝大多数家用摄像头都支持)。

登录飞牛NAS后台,进入“应用中心”->“Docker”,确保Docker服务已启动。然后通过SSH或文件管理器创建配置目录:

mkdir -p /vol1/docker/frigate/config
mkdir -p /vol1/docker/frigate/media

第二步:编写docker-compose.yml并启动

Frigate官方推荐使用docker-compose管理。在/vol1/docker/frigate目录下创建docker-compose.yml文件,内容如下:

version: '3.8'
services:
  frigate:
    container_name: frigate
    restart: unless-stopped
    image: ghcr.io/blakeblackshear/frigate:stable
    shm_size: '64mb' # 共享内存,用于处理视频流
    devices:
      - /dev/dri/renderD128 # Intel核显设备,若没有可删除此行
    volumes:
      - ./config:/config
      - ./media:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000 # 1GB缓存,减少磁盘写入
    ports:
      - '8971:8971' # Web界面
      - '8554:8554' # RTSP接入端口
    environment:
      - FRIGATE_RTSP_PASSWORD=your_password # 设置RTSP认证密码

保存后,在SSH终端进入该目录并执行:

cd /vol1/docker/frigate
sudo docker-compose up -d

首次启动会自动拉取镜像,约需几分钟。完成后访问http://你的NAS_IP:8971,即可看到Frigate的Web界面。

第三步:配置摄像头与AI检测规则

Frigate的配置集中在config/config.yml中。以下是一个基础配置示例,包含一个摄像头和人员检测:

mqtt:
  enabled: false # 若不需要MQTT可关闭

detect:
  width: 1280
  height: 720
  fps: 5 # 检测帧率,5fps足够且省资源

objects:
  track:
    - person
    - car

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://admin:[email protected]:554/stream1
          roles:
            - detect
            - record
    detect:
      width: 1280
      height: 720
      fps: 5
    record:
      enabled: true
      retain:
        days: 5 # 录像保留5天
        mode: motion # 仅保存有运动的片段
    zones:
      driveway:
        coordinates: 0.2,0.2,0.8,0.2,0.8,0.8,0.2,0.8 # 定义检测区域(归一化坐标)

path替换为你的摄像头RTSP地址。配置后重启Frigate:

sudo docker-compose restart

此时,Frigate会自动开始检测画面中的人和车辆。在Web界面中,你可以看到实时视频流,以及检测框。

进阶:设置事件通知与自动化

检测到事件后,如何及时通知你?Frigate支持通过Webhook或MQTT发送通知。最简单的方式是配置飞牛NAS的“通知服务”,结合Frigate的events API。

例如,通过curl命令在检测到人员时发送飞牛NAS内置的推送通知(需先在飞牛设置中开启Webhook):

curl -X POST -H "Content-Type: application/json" -d '{"msg":"检测到人员活动!"}' http://127.0.0.1:8888/notify

你可以在Frigate的config.yml中设置go2rtcwebhooks,但更推荐使用Home Assistant集成,实现更复杂的自动化(如检测到人后自动录像并发送截图到手机)。

性能调优与常见问题

  • CPU占用高:确保/dev/dri/renderD128设备映射正确,并在environment中添加LIBVA_DRIVER_NAME=iHD。如果仍高,降低检测帧率或分辨率。
  • 无法检测到物体:检查摄像头画面是否清晰,适当调整detectwidthheight,并确保objects.track包含目标类别。
  • 录像不保存:确认record.enabled: trueretain.days设置合理,检查media目录权限。

总结

通过以上三步,你的飞牛NAS已经成功变身为一套智能监控系统,能够实时识别人员、车辆并自动保存事件录像。整个过程无需额外硬件,完全利用NAS现有资源,且数据完全私有。这套方案不仅适用于家庭安防,也能用于小型办公室或仓库。后续你还可以扩展接入更多摄像头、添加人脸识别模型,甚至与飞牛NAS的相册联动,构建更完整的智能家居生态。现在就去试试吧,让监控从“被动记录”变为“主动思考”。

💬 评论区
发表评论

暂无评论,来说两句吧