请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 5210|回复: 147

[进阶教程] 万字经验,一文带你入门frigate AI监控

 火... [复制链接]

24

主题

149

回帖

1402

积分

论坛UI达人

积分
1402
金钱
1224
HASS币
50
发表于 2025-5-20 11:44:48 | 显示全部楼层 |阅读模式
本帖最后由 gasment 于 2025-6-6 17:03 编辑

我使用frigate 做nvr(网络录像机)来替代群晖的Surveillance Station已有半年,
期间尝试过的方案也不少,踩坑也不少,从单纯的录像,到HA联动,到人在检测,
现在已达成一套比较稳定的方案,可以拿出来供大家参考了

需要注意,frigate并不是一个轻量级的应用,要实现比较理想的运行效果,平台需要一定的性能,
(推荐为4核心带GPU的处理器,8G以上内存)
如果你只是需要一个简单的NVR,frigate并不适合你


那frigate可以做什么呢?
1、传统NVR 24x7监控录制,多种回看模式
2、基于本地特化AI模型推理的的对象识别
3、联动homeassistant,拓展为各类传感器
···
frigate(0.15.1)目前缺点:
1、没有移动端app,移动端浏览器回看操作不方便
2、资源占用比较大
3、没有汉化界面
···
看完以上,对部署frigate有兴趣的,可以进入正文了:
本文目录:

一、设备选型
二、frigate容器搭建参考
三、frigate配置参考
四、联动HA
五、其他问题

                               
登录/注册后可看大图



####2025.6.6更新编辑:修复一些编写错误,增加一些说明,优化frigate配置示例

一、设备选型参考
先说明下几个会提到的术语
  • 编解码:frigate需要解码视频流才可以进行后续处理,而编码是可选的(在保存视频格式不符需求时使用),编解码是资源密集型任务,需要占用一定性能
  • 推理:frigate对象识别需要根据不同的模型进行推理识别,其单帧耗时为推理速度,推理速度跟模型参数量和处理的硬件水平有关,以官方推荐的Coral TPU为例子,其典型推理速为10ms,每秒可处理1000/10=100帧画面,再多就会丢失部分检测或排队阻塞,官方推荐每个视频流检测帧数为5,也就是最大可能接入20个视频流
  • 模型:模型的类型与frigate检测器相关,模型有参数量大小之分,参数量大的模型,识别越精确,代价是推理速度的相应增加,比如yolo_nas模型分yolo_nas_s/m/l 三种


目前实践过的设备方案情况(功耗不含硬盘),测试环境为9路摄像头接入,全部启用检测与录制,CPU占用包含其他部署的服务(约占1%~5%)
G4560(双核四线程)+ iGPU编解码+iGPU推理,平台功耗20~30W
  • OpenVino检测器+ssdlite_mobilenet_v2模型,推理速度:10-20ms,CPU平均占用50%,峰值70%;
  • OpenVino检测器+yolo_nas_s模型,推理速度:20-30ms,CPU平均占用60%,峰值80%;


G4560(双核四线程)+ iGPU编解码+Coral推理,平台功耗20~30W
  • coral检测器+TensorFlow Lite模型,推理速度:8~12ms,CPU平均占用50%,峰值70%


I3-8100T(四核四线程)+ iGPU编解码+iGPU推理,平台功耗20~30W
  • OpenVino检测器+ssdlite_mobilenet_v2模型,推理速度:10-20ms,CPU平均占用30%,峰值50%;
  • OpenVino检测器+yolo_nas_s模型,推理速度:20-30ms,CPU平均占用40%,峰值70%;


I3-8100T(四核四线程)+ iGPU编解码+Coral推理,平台功耗20~30W
  • coral检测器+TensorFlow Lite模型,推理速度:8~12ms,CPU平均占用30%,峰值50%


I3-8100T(四核四线程)+ nvidia T600编解码+nvidia T600推理,单显卡功耗20-30W
  • tensorrt检测器+yolov7-320模型,推理速度:20-30ms,CPU平均占用30%,峰值40%,显存占用1.2G


I3-8100T(四核四线程)+ nvidia T600编解码+Coral推理,单显卡功耗20-30W
  • coral检测器+TensorFlow Lite模型,推理速度:5-10ms,CPU平均占用30%,峰值40%,显存占用1.2G


CC150(八核十六线程)+ nvidia T600编解码+Coral推理,单显卡功耗20-30W
  • coral检测器+TensorFlow Lite模型,推理速度:5-10ms,CPU平均占用10%,峰值20%,显存占用1.2G


N100(四核四线程)+iGPU编解码+iGPU推理,平台功耗10~20W
  • OpenVino检测器+ssdlite_mobilenet_v2模型,推理速度:10-20ms,CPU平均占用40%,峰值70%;


N100(四核四线程)+iGPU编解码+Coral推理,平台功耗10~20W
  • coral检测器+TensorFlow Lite模型,推理速度:8~12ms,CPU平均占用40%,峰值70%

RK3588(八核ARM) + VPU编解码+NPU推理,平台功耗5~8W
  • rknn检测器+yolo_nas_s模型,推理速度:30-40ms,CPU平均占用30%,峰值50%;
  • rknn检测器+yolo_nas_m模型,推理速度:40-50ms,CPU平均占用30%,峰值50%;


RK3588(八核ARM) + VPU编解码+Coral推理,平台功耗5~8W
  • oral检测器+TensorFlow Lite模型,推理速度:8~12ms,CPU平均占用30%,峰值50%



关于优化frigate检测的的一些经验:
  • frigate检测流程大概可以理解为:GPU流解码->CPU运动检测+裁剪->检测器推理,这3步都存在延迟问题,通过观察debug画面与现实之间的延迟来大概判断检测性能
  • GPU流解码延迟:根据上面的实践经验,不同的硬件,解码速度貌似存在差异,在使用速度最快的coral检测器和rtsp原生流检测情况下,intel GPU和RK3588体现在debug画面上的延迟大约为2~3秒,加上检测对象需要经过数帧的对比(使用推荐检测帧率5fps),一共造成了3~4秒的识别延迟;使用N卡,比如我的T600,在debug画面上的延迟大约为0.5~1秒,如图,加上检测耗时,控制在了2秒内。以上为我自身环境测试,结果受摄像头性能,摄像头连接方式,网络环境等影响,仅供参考
  • wechat_2025-06-06_114852_296.png
  • CPU运动检测+裁剪:frigate使用CPU进行帧间变化检测,也就是运动判断,判断为运动的帧,裁剪后喂给检测器做AI推理,提高检测流的分辨率和帧率,CPU将进行更多的帧间变化检测,工作量增加;因此,需要提升检测频率,CPU性能要够,优先提高CPU核心数,而不是单核性能
  • 检测器推理:检测器延迟取决于检测器硬件,如上面方案所示,最低延迟是coral,典型的10ms延迟,最高可以达到每秒100帧的检测,如使用推荐检测帧率5fps,最高接入20路摄像头检测;最高延迟是RK3588,yolo_nas_m的40~50ms延迟最大接入3~5路;当然所有检测流同时满载的情况很少,可以根据实际适当放宽接入数量
  • PS:
  • 官方提供了可以改进模型的订阅方案Frigate+,可以上传自己的快照图片来训练专属模型,提高识别精度,该方案年费50刀,提供每年12次的模型导出,可供coral,intel/amd/nvidia GPU检测器使用,详情可查阅:https://docs.frigate.video/integrations/plus
  • 免费用户也可以上传自己的快照来为改进公共模型做贡献,说不定下一次frigate更新就会合入你的改进,关于隐私问题,查阅:https://docs.frigate.video/plus/faq





总结参考
性价比之选
intel 4核,6代及以上带核显的CPU + 8G及以上内存+OpenVino检测器+ssdlite_mobilenet_v2模型
一个CPU即可包揽编解码和检测,而且与大部分人在用的设备重合度高,基本不用新增额外设备即可食用。
缺点:模型识别精度较低,核显解码流延迟在2~3秒
优化建议
  • 升级到intel 6核以上,可以使用yolo_nas模型,提高识别精度同时降低CPU整体占用
  • 如果你有大量摄像头需要跑检测,而且对识别精度有一定要求,可以额外增加一个Coral TPU
    Coral推荐买M.2接口的,实测群晖、飞牛OS都可以编译驱动,威联通官方有这玩意,但是注意适配机型
    M.2接口版本市场价300左右,USB版无需驱动,兼容性更强,但是贵了1倍多,不是很推荐。增加Coral TPU不会显著降低检测流延迟




性能之选:
4核以上CPU + 8G及以上内存 + NVIDIA (RTX)显卡 + yolov模型
独立GPU解码流,有更低的检测流延迟(1秒内),适合需要快速识别的场景
缺点功耗比较高,单显卡功耗去到20~30W,性价比低
优化建议
  • 升级到8核或以上CPU,frigate占用可以压到个位数
  • 增加一个Coral检测器代替yolov模型,配合8核或以上CPU,可以将检测器延迟压到6ms左右,增加最大接入检测数量



低功耗之选:
RK3588 + 8G及以上内存 +yolo_nas_s/m模型
一个芯片同时具备编解码的VPU和推理的NPU,整合度很高,功耗低,日常5~7W
缺点:自带的NPU检测延迟较高,最大检测数量有限(5-7条流),VPU解码流延迟在2~3秒以上
优化建议:
  • 增加一个Coral检测器代替yolo_nas_s/m模型,可以将检测器延迟压到12ms左右,增加最大接入检测数量



  • PS:A卡/APU也可以跑,官方文档也有提到,具体情况我没硬件测试不了

监控摄像头输入:
每个摄像头提供至少一条RTSP协议视频流即可,视频格式最好调整为H264或H265,音频为AAC,其他格式则需要额外重编码;
如果同时有最低720P的5FPS的子码流最好
理想情况为:
1条H265/H254 AAC 15fps以上 主码流用于录制
1条H254 无音频 5fps 子码流用于检测
修改摄像头的设置,采用贴近frigate检测预设的流格式(H265/H254 AAC 5fps),可以减少后期裁剪等处理,减少资源占用



                               
登录/注册后可看大图

二、frigate容器搭建参考
docker容器统一使用docker-compose部署,怎么玩docker-compose就不讨论了,可以自行学习
frigate的web默认端口为5000和8971,5000无密码,注意保护,8971为有密码的https


排版可能有问题,可下载yaml文件
游客,如果您要查看本帖隐藏内容请回复
注意#号后注释说明!

#####方案1:Intel CPU+ iGPU编解码+iGPU或Coral推理
version: "3.9"
  services:
    frigate:
      container_name: frigate
      privileged: true    # 使用特权模式
      restart: unless-stopped
      image: ghcr.io/blakeblackshear/frigate:0.15.1
      shm_size: "512mb"     # 这个根据视频流数量来定,我这边9条流
      devices:
        - /dev/dri/renderD128:/dev/dri/renderD128  # GPU透传
       #- /dev/apex_0:/dev/apex_0  #使用Coral推理,请取消#注释
      volumes:
        - /etc/localtime:/etc/localtime:ro
        - /volume1/docker/frigate/config:/config   #配置存放目录,请修改
        - /volume4/NVR/frigate:/media/frigate     
#配置存放目录,请修改
        - type: tmpfs
          target: /tmp/cache
          tmpfs:
          size: 500000000
      ports:
        - "1984:1984" # go2rtc web
        - "8971:8971"
        - "5000:5000" # 群晖会冲突,修改为其他如5555:5000
        - "8554:8554"
        - "8555:8555/tcp"
        - "8555:8555/udp"
      environment:
        FRIGATE_RTSP_PASSWORD: "passwd"
       #PLUS_API_KEY: xxxxxxx-xxxxxx-xxxxxxxx    #frigate+的api key(如果有)



######方案2:NVIDIA (RTX)显卡编解码+NVIDIA (RTX)显卡/coral推理,显卡推理的话首次启动会比较耗时,需要等待模型构建完成
version: "3.9"
  services:
    frigate:
      container_name: frigate
      privileged: true # 使用特权模式
      restart: unless-stopped
      image: ghcr.io/blakeblackshear/frigate:0.15.1-tensorrt   #使用特定镜像
      deploy:
        resources:
          reservations:
            devices:
              - driver: nvidia
                capabilities: [gpu]
      shm_size: "512mb"  # 这个根据视频流数量来定,我这边9条流
      #devices:  #使用Coral推理,请取消#注释
       #- /dev/apex_0:/dev/apex_0  #使用Coral推理,请取消#注释

      volumes:
        - /etc/localtime:/etc/localtime:ro
        - /volume1/docker/frigate/config:/config   #配置存放目录,请修改
        - /volume4/NVR/frigate:/media/frigate     
#配置存放目录,请修改
        - type: tmpfs
          target: /tmp/cache
          tmpfs:
            size: 500000000
      ports:
        - "1984:1984" # go2rtc web
        - "8971:8971"
        - "5000:5000"      # 群晖会冲突,修改为其他如5555:5000
        - "8554:8554"
        - "8555:8555/tcp"
        - "8555:8555/udp"
      environment:
        FRIGATE_RTSP_PASSWORD: "passwd"
       #PLUS_API_KEY: xxxxxxx-xxxxxx-xxxxxxxx    #frigate+的api key(如果有


#####方案3:rockchip平台,由于frigate-rk镜像带的go2rtc无法调用rk的硬件编解码加速,这里需要另起一个go2rtc容器来处理前期的转码工作
#######go2rtc

version: "3.9"
  services:
    go2rtc:
      container_name: go2rtc
      image: alexxit/go2rtc:master-rockchip   #使用特定镜像
      network_mode: bridge
      ports:
        - 11984:1984
        - 18554:8554   
        - 18555:8555            #端口需与frigate错开
      privileged: true         # 使用特权模式
      restart: unless-stopped  
      environment:
        - TZ=Atlantic/Shanghai
      volumes:
        - "/mnt/docker-data/go2rtc:/config"   #配置存放目录,请修改


#####frigate
version: "3.9"
  services:
    frigate:
      container_name: frigate
      privileged: true         # 使用特权模式
      restart: unless-stopped
      image: ghcr.io/blakeblackshear/frigate:0.15.1-rk       #使用特定镜像
      shm_size: "512mb"                  # 这个根据视频流数量来定,我这边9条流
      #devices:  #使用Coral推理,请取消#注释
       #- /dev/apex_0:/dev/apex_0  #使用Coral推理,请取消#注释

      volumes:
        - /etc/localtime:/etc/localtime:ro
        - /volume1/docker/frigate/config:/config   #配置存放目录,请修改
        - /volume4/NVR/frigate:/media/frigate     
#配置存放目录,请修改
        - type: tmpfs
          target: /tmp/cache
          tmpfs:
            size: 500000000
     ports:
       - "1984:1984"       # go2rtc web
       - "8971:8971"
       - "5000:5000"      
# 群晖会冲突,修改为其他如5555:5000
       - "8554:8554"
       - "8555:8555/tcp"
       - "8555:8555/udp"
     environment:
       FRIGATE_RTSP_PASSWORD: "passwd"
       #PLUS_API_KEY: xxxxxxx-xxxxxx-xxxxxxxx    #frigate+的api key(如果有




三、frigate配置参考

frigate的大部分设置由一个config文件来配置,在web配置的功能比较少,这也是上手难度比较大的原因
进入frigate web->Config Editor进行在线编辑,以下提供的配置参考,请逐行对比修改

由于yaml对缩进格式要求严格,如有排版错误,可下载完整配置,逐项对比修改:
游客,如果您要查看本帖隐藏内容请回复

注意#号后注释说明!
#号后为注释或无效代码,启用该行请删掉#


version: 0.15-1
mqtt:     #如果需要联动HA,需要安装mqtt服务器,文末有介绍
  enabled: true
  host: 192.168.x.x
  user: xxx
  password: xxx


#↓↓↓↓↓↓↓↓↓↓↓↓go2rtc配置↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
go2rtc:   ###建议配置detect和record两条流,检测流使用原生rtsp来降低延迟,录制流可做转码存储
  streams:      
    camera-1-both:    #aac+h265  可同时用于detect和record,命名为both
      - rtsp://xxxxxxxxx

    camera-2-detect:  #非aac+h265 ,原生rtsp做检测
      - rtsp://xxxxxxxxx
    camera-2-record:  #使用ffmpeg转码detect流为aac+h265,用于录制
      - "ffmpeg:camera-2-detect#video=copy#audio=aac#hardware=cuda"  
        #video=copy为不转码视频,#video=h264为转码视频为h264,#audio=aac为转码音频为aac,#hardware=cuda为使用N卡硬件加速(音频无法加速),intel/amd为hardware=vaapi
        #video=h264#width=1280#height=720#audio=aac#hardware=cuda,以上为转码H264+AAC,缩小分辨率为720p,注意添加分辨率参数时不可使用video=copy,需为video=h264/video=h265
       #注意:rk3588不要在此处使用视频转码,可以使用音频转码(音频转码只能CPU软转码),需要转码视频请使用外部专用go2rtc,参考文未补充

    camera-3-detect: #h264+无音频
      - rtsp://xxxxxxx
    camera-3-record: #aac+h265
      - rtsp://xxxxxxx
    #camera-3为理想情况,detect和record两条原生流独立,格式符合预期,无需转码

  ####更多摄像头按需按格式添加


#↓↓↓检测器配置,以下4选1,多余的删除↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
detectors:
  coral:        #m.2版coral使用
    type: edgetpu
    device: pci
detectors:
  ov:                 #intel GPU推理使用
    type: openvino
    device: GPU
detectors:
  tensorrt:          #N卡推理使用
    type: tensorrt
    device: 0    #使用第0个GPU
detectors:
  rknn:
    type: rknn
    num_cores: 3  #rk3588添加此项,开启3个NPU




#↓↓↓模型配置,按检测器选用其一,多余的删除,如使用coral,无需配置此项↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
model:   ###openvino使用,此模型容器自带
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

model:   ###openvino使用,此模型需要自行构建,参考https://docs.frigate.video/confi ... #supported-models-2
  model_type: yolonas
  width: 320
  input_pixel_format: bgr
  input_tensor: nchw
  path: /config/yolo_nas_s.onnx   #将构建好的模型放入此路径
  labelmap_path: /labelmap/coco-80.txt

model:  ###tensorrt使用,此模型需要本机构建,最好有科学上网,首次启动构建耗时较长
  path: /config/model_cache/tensorrt/yolov7-320.trt
  labelmap_path: /labelmap/coco-80.txt
  input_tensor: nchw
  input_pixel_format: rgb
  width: 320
  height: 320

model:   ###rknn使用,此模型容器自带
  path: deci-fp16-yolonas_s   #另外有deci-fp16-yolonas_m和deci-fp16-yolonas_l,对应大中小3个参数量,越大延迟越高
  width: 320
  height: 320
  input_pixel_format: bgr
  input_tensor: nhwc
  labelmap_path: /labelmap/coco-80.txt



#↓↓↓检测参数配置↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
detect:
  enabled: true
  width: 1280    #检测分辨率不是越大越好,需要根据对象在画面的大小比例确定,参考:https://docs.frigate.video/frigate/camera_setup
  height: 720
  fps: 6     #检测帧数,官方推荐5,可以配合摄像头输出做增减,最高不要超过10
  annotation_offset: -1000  #检测框微调,观察web中的explore->Tracked Object Details->Object Lifecycle中的红色检测框,如果检测框落后于检测对象的位置,需要给与负延迟修正,反之增加,单位ms
objects:
  track: #声明可用于跟踪的对象
    - person
    - bicycle
    - car
    - motorcycle
    - cat
    - dog


#↓↓↓录制参数配置↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
record:
  enabled: true
  retain:
    days: 14
    mode: all   #此为14天全时录制
  alerts:
    retain:
      days: 7
      mode: motion   #带运动的片段保留7天
snapshots:
  enabled: true    #开启快照,可用于上传frigate+
  clean_copy: true
  timestamp: false
  bounding_box: true
  crop: false
  height: 720   #快照尺寸720p
  retain:
    default: 14  #保留14天
  quality: 100




#↓↓↓摄像头配置↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
cameras:
  camera-2:  #摄像头名称,可自定义,建议与go2rtc中的对应
    live:
      stream_name: camera-2-record    #实时预览,使用record流,保证音频可用

    ffmpeg:

      output_args:
        record: preset-record-generic-audio-copy   #输出参数,开启音频录制,不要使用preset-record-generic-audio-aac,当前版本0.15.1无法工作,会导致音频流丢失,录音只接受aac,需要在go2rtc提前转码
      inputs:
        - path: rtsp://127.0.0.1:8554/camera-2-record   #录制流输入,本地go2rtc复用
          input_args: preset-rtsp-restream-low-latency  #go2rtc流复用低延迟参数,如果有问题,可以换为preset-rtsp-restream尝试,非复用流使用preset-rtsp-generic
          hwaccel_args: preset-nvidia   #硬件加速预设参数
                       #preset-nvidia适用n卡加速解码h264/h265,
                       #preset-vaapi适用intel/amd gpu的加速解码h264/h265
                       #preset-intel-qsv-h264和preset-intel-qsv-h265分别对应intel的加速解码h264/h265
                       #preset-rk-h264和preset-rk-h265分别对应rk3588的加速解码h264/h265
                       #选用什么预设,根据输入流格式和当前硬件而定

          roles:   
            - record   #声明此流用于录制
        - path: rtsp://127.0.0.1:8554/camera-2-detect   #检测流输入,本地go2rtc复用
          input_args: preset-rtsp-restream-low-latency  #同record
          hwaccel_args: preset-nvidia #同record
          roles:
            - detect     #声明此流用于检测

    detect:
      #enabled: false  #可以单独关闭某一个摄像头的检测
      #width: 1920    #可以单独调整某一个摄像头的检测分辨率
      #height: 1080   
      #fps: 10   #可以单独调整某一个摄像头的检测帧率,对于快速运动的画面或需要提升检测速度,可以尝试提升fps,提升fps要根据CPU和检测器性能来量力而为


    zones:   #zone不使用代码配置,但也可以事先设定一个不符合实际的,方便添加一些不可以在web添加的参数,zone区域之后在web修改
      camera-2-person:   #区域名称,自定义
        coordinates: 0.204,0.153,0.209,0.69,0.739,0.646,0.816,0.376,0.798,0.245  #此为区域坐标,需要在web修改,这里预设了一些不符实际的,只是方便添加参数
        loitering_time: 0
        objects: person #只跟踪人
        inertia: 3
        #filters:    #filters过滤参数,默认参数对检测躺着的人不准确,可以按需修改如下的ratio比例
          #person:
            #min_ratio: 0.3
            #max_ratio: 3.0

    motion:   #motion不使用代码配置,但也可以事先设定一个不符合实际的,之后在web修改
      mask: 0.736,0,0.74,0.05,0.877,0.048,0.88,0.093,0.995,0.093,0.994,0
      threshold: 30
      contour_area: 30
      improve_contrast: true

    objects:  #对于复杂场景,可定义对象识别的阈值来减少误判
      filters:
        person:   #人
          min_score: 0.6    #低于0.6 score 的人会立刻放弃跟踪,避免一些误识别,score可以理解为吻合度,过低的min_score会导致不必要的跟踪,过高的min_score会导致必要的跟踪被忽略
          threshold: 0.75    #判断阈值,一段时间内的score高于此值就会被判断为“人”,过低的threshold容易误判,过高的threshold则无法触发人在
          #建议室内min_score为0.4~0.5,室外复杂场景可以提高到0.6
          #threshold对于需要低误触发的,可以设置到0.7以上,一般半身人的score都能在0.8以上,最高不要超过0.8,比如coral检测器的默认模型最高score也只有0.84
        #bicycle:
        #car:
        #motorcycle:   #其他对象也可以如此设置阈值
        #cat:
        #dog:


    review: #回放选项
      alerts:  #告警片段仅记录特定区域中的特定对象
        required_zones:
          - camera-2-person
        labels:
          - person
    snapshots: #快照仅记录特定区域
      required_zones:
        - camera-2-person


#▲▲▲▲▲▲▲▲以上为一个摄像头的配置参考,更多摄像头按照格式如法炮制:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  camera-3:
    live:
      stream_name:  
    ffmpeg:
      output_args:
      inputs:
      ···················




7、按顺序完成以上配置后,重启frigate,观察frigate web上的日志是否有报错或警告
8、web相关配置
  • 进入frigate的5000端口web管理页,进入setting->UI Settings->First Weekday,这里可改成monday
  • 进入Users,新建一个用户,用于8971端口登录,可以删掉原有的admin用户
  • 进入Masks / Zones,修正或添加我们预设的不符实际的摄像头的区域:
  • zones:为检测区域,比如想检测人在,就框起来一个区域,Objects选person
  • Motion Masks:运动遮罩区域,用于排除一些固定存在的元素,比如摄像头带的水印、OSD时间戳等,区域大小不要过大,不要滥用Motion Masks来限制检测,会造成对象跟踪困难
  • Object Masks:对象遮罩,用于排除一些固定的误报区域,比如风吹动的树,固定停放的车等
  • 进入Motion Tuner,可以调整触发运动检测的阈值,可以使用隔壁的debug画面来调试
  • 完成以上,记得重启frigate容器

9、补充配置(rk3588 专用go2rtc)
按照方案3的go2rtc docker-compose启动容器,进入go2rtc的web(ip:11984),检查ADD选项卡下的ffmpeg hardware,rkmpp是否为OK,OK代表已准备好硬件加速
然后转到config,编辑config
streams:
  camrea-1:
    - ffmpeg:rtsp://xxxxxxx#video=h264#audio=aac#hardware=rkmpp

######专用go2rtc与frigate里的写法大同小异,相应修改frigate中的go2rtc的rtsp流地址为专用go2rtc的ip如rtsp://192.168.x.x:18554/camrea-1来代摄像头原生rtsp



四、联动homeassistant
  • HA集成方式

HACS商店直接搜索frigate安装集成即可,接入后就有很丰富的实体,这是最简单直接的方法(如果添加后实体不可用,需要配置mqtt集成连接到mqtt服务器
  • MQTT

需要搭建MQTT服务器,比如EMQX,在frigate配置中配置mqtt参数后,其他mqtt客户端就可以订阅相关主题,自动化可以配合nodered食用
https://docs.frigate.video/integrations/mqtt
PS:搭建MQTT服务器:EMQX Docker-compsoe:
version: '3'
services:
  emqx:
    image: emqx/emqx:5.8.4
    container_name: emqx
    restart: unless-stopped
    volumes:
      - /volume1/docker/mqtt-server/data:/opt/emqx/data   #挂载目录,自行修改
      - /volume1/docker/mqtt-server/log:/opt/emqx/log     
#挂载目录,自行修改
    network_mode: bridge
    ports:
      - 1883:1883
      - 8083:8083
      - 8084:8084
      - 8883:8883
      - 18083:18083   #web
    healthcheck:
        test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
        interval: 5s
        timeout: 25s
        retries: 5


启动成功后登录web端口18083,进入【访问控制】->【客户端认证】->【内置数据库】->【用户管理】,添加用户即可,frigate和ha登录到该mqtt服务器,frigate集成实体可恢复可用
HA在【设备与服务】搜索集成mqtt,按提示添加连接

  • HTTP API

使用http get/post等协议来获取一些数据,或者控制一些参数
https://docs.frigate.video/integrations/api/frigate-http-api
  • 视频流实时查看卡片

官方的Advanced Camera Card功能太杂,我用的WebRTC Camera集成,配置集成连接frigate的go2rtc端口1984即可
卡片模板:
<font face="Arial">type: custom:webrtc-camera
url: #在go2rtc中配置的摄像头名字,如main-door-right</font>

五、其他问题
1、如果你的视频流是h265,需要使用支持HEVC的浏览器才可以正常预览视频
  • windows10及以上可以安装HEVC Video Extensions扩展+EDGE/Chrome浏览器
  • linux(debian/ubuntu等)可以使用Chromium浏览器,配合启动参数:

<font face="Arial">--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder</font>
我在debian12+kde桌面环境上测试成功
        手机iOS使用Safari、edge等都可,安卓我使用小米自带浏览器也可
2、检查rk3588 NPU的使用率(这个功能在下个大版本16.x会集成到web)
<font face="Arial">cat /sys/kernel/debug/rknpu/load
NPU load:  Core0:  0%, Core1:  0%, Core2:  0%</font>
3、群晖、飞牛OS使用N卡,安装商店提供的驱动即可
4、群晖、飞牛OS使用coral TPU(pcie),需要编译驱动文件,加载后才可使用
或我部署的静态文档:https://dsm7-build-model.netlify.app/







评分

参与人数 10金钱 +126 HASS币 +40 收起 理由
Jerrylee + 12 高手,这是高手!
book123 + 10 高手,这是高手!
xiongmx + 10 赠人玫瑰,手留余香!
jjcs + 12 感谢楼主分享!
Roger + 20 + 20 高手,这是高手!
+ 20 + 20 高手,这是高手!
firewater + 10 厉害了word楼主!
aiqienanguatou + 10 专门注册账号来顶你!
隔壁的王叔叔 + 12 高手,这是高手!
qjrxsoft + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

3

主题

211

回帖

1771

积分

金牌会员

积分
1771
金钱
1557
HASS币
0
发表于 2025-5-20 13:08:37 | 显示全部楼层
大佬分享的挺详细的,我计划用rk3588的方案在搞一套,但是苦于没有rk3588的测试说明,我个人是反对all in one,所有的东西都放一台设备上,太没有安全感了,我一直非常喜欢ARM低功耗平台,有了楼主这篇参考,我可以入手搞了。
回复

使用道具 举报

31

主题

1445

回帖

6650

积分

元老级技术达人

积分
6650
金钱
5149
HASS币
100
发表于 2025-5-20 13:15:19 | 显示全部楼层
优秀
回复

使用道具 举报

hhh. 手机认证

10

主题

324

回帖

2855

积分

论坛UI达人

积分
2855
金钱
2521
HASS币
0
发表于 2025-5-20 13:17:11 | 显示全部楼层
feigate   个人首推 G7505 这个U硬件配置,11代的Intel核显,性能强劲,整体功耗较低,可以AIO,也可物理HA或ikuai。
回复

使用道具 举报

24

主题

149

回帖

1402

积分

论坛UI达人

积分
1402
金钱
1224
HASS币
50
 楼主| 发表于 2025-5-20 13:23:00 | 显示全部楼层
qjrxsoft 发表于 2025-5-20 13:08
大佬分享的挺详细的,我计划用rk3588的方案在搞一套,但是苦于没有rk3588的测试说明,我个人是反对all in o ...

我现在就是3588在单独跑frigate,整体表现还是挺不错的,就是NPU不够顶,我这里7条检测流基本就快跑满了
回复

使用道具 举报

0

主题

15

回帖

158

积分

注册会员

积分
158
金钱
143
HASS币
0
发表于 2025-5-20 13:33:14 | 显示全部楼层
感谢分享
回复

使用道具 举报

3

主题

211

回帖

1771

积分

金牌会员

积分
1771
金钱
1557
HASS币
0
发表于 2025-5-20 13:46:23 | 显示全部楼层
gasment 发表于 2025-5-20 13:23
我现在就是3588在单独跑frigate,整体表现还是挺不错的,就是NPU不够顶,我这里7条检测流基本就快跑满了 ...

可以跑7条已经足够家用,我的实际场景也就4条,我现在的方案是:家了原有一套海康威视的监控,有5个摄像头,存储到海康威视的NVR里,我查了一下,我这个型号的摄像头可以支持2路取流(可以接入两台NVR),再取一组流到RK3588跑的frigate,实现视频的识别,存储还是存到海康的NVR上,这样弄投入少架构也简单。
回复

使用道具 举报

2

主题

398

回帖

2694

积分

金牌会员

积分
2694
金钱
2289
HASS币
30
发表于 2025-5-20 14:25:59 | 显示全部楼层
謝謝大佬,我也玩了一段時間
回复

使用道具 举报

14

主题

1568

回帖

5134

积分

论坛元老

积分
5134
金钱
3552
HASS币
0
发表于 2025-5-20 14:55:31 | 显示全部楼层
学习一下,正想折腾这个呢
回复

使用道具 举报

3

主题

198

回帖

3594

积分

论坛元老

积分
3594
金钱
3393
HASS币
0
发表于 2025-5-20 15:05:52 | 显示全部楼层
学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-6-22 00:43 , Processed in 0.091171 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表