![图片[1]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2024/03/1711075200-efe9356a47ee269.png)
前言
frigate 是一个不错的NVR,尤其是在0.16.0版本后支持了中文,方便了国人使用,X86教程国内有不少,但是Rockchip RK3588相对较少,今天我们就一篇教程来部署frigate包括搭建,配置摄像头双向通话,云台以及ai等内容。
硬件
在开始前,我们先说一下硬件,Frigate按照官方文档中的说法,只要数字摄像头并且能提供RTSP视频流的就都可以在frigate中使用,至于云台需要使用onvif,相对来说国内大部分的摄像头都可,但是也有部分是无法使用的,官方提供了一个列表大家可以去查看,但是列表之外的,我们也只能尝试一下看看,至于自动追踪,一般便宜的摄像头基本都无法开启,因为需要摄像头支持相对移动(Relative Movement)
所以在选购摄像头硬件的时候,尽量询问卖家,是否支持rstp与onvif这两个比较重要。
在RK3588的选择中,后缀带S、C、S-D都是可以的,NPU与VPU算力都是没有影响的,只是外围接口稍有差别,具体请自行查看瑞芯微官方,在选择板子的时候,尽量选择带有NVME接口,或者带有sata接口的,因为录像存储是比较消耗存储空间的,当然我们也可以在Linux系统内挂在局域网NAS,比如NFS或者SMB,但是网络协议在启动顺序以及稳定性上肯定是不如本地存储硬件的。
本教程硬件
| 硬件 | 型号 |
|---|---|
| NanoPi | R6C |
| 摄像头/海康 | DS-2CD1345DV2-LA/DS-2DC3P40MW-DE(云台) |
| 存储 | nvme:三星980evo 500G |
软件
在教程开始前,大家需要针对自己的开发板系统做一个检查,查看是否正常驱动了硬件。
查看NPU驱动版本
使用命令查看NPU是否启动
dmesg | grep rknpu
![图片[2]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260113164803197-QQ20260113-164748.png)
在NPU正常驱动的情况下,我们可以使用命令查看到他的驱动版本以及核心的使用率
cat /sys/kernel/debug/rknpu/version
RKNPU driver: v0.9.8
驱动版本建议使用v0.9.8,不是此版本的建议大家升级到此版本,以免出现未知奇奇怪怪的问题。
cat /sys/kernel/debug/rknpu/load
NPU load: Core0: 0%, Core1: 0%, Core2: 0%,
这里可以看到NPU三个核心都是0%负载。
查看所需要的组件是否加载
依次输入命令查看返回结果
ls /dev/dri
ls /dev/dma_heap
ls /dev/rga
ls /dev/mpp_service
![图片[3]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260113165449322-QQ20260113-165437.png)
安装docker
安装docker的方式,使用官方的安装脚本快速安装就可以了,因为frigate我们使用docker安装。
curl -sSL https://get.docker.com | sh
如果你没国际网络,这里也可以用离线脚本,下载文件上传到3588开发板内。
cd ~/ #进入放置脚本的目录内
chmod +x ./installdocker.sh
./installdocker.sh --mirror Aliyun #使用阿里云镜像服务器进行安装docker
安装frigate
这里使用compose进行配置容器
services:
frigate:
container_name: frigate
privileged: true
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable-rk
shm_size: "512mb"
network_mode: host
devices:
- /dev/dri/renderD128
- /dev/dri/renderD129
- /dev/dri
- /dev/dma_heap
- /dev/rga
- /dev/mpp_service
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /nvme/frigate/config:/config #frigate的配置文件存放位置
- /nvme/frigate/storage:/media/frigate #录制的视频存放位置
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
# ports:
# - "8971:8971"
# - "5000:5000" # Internal unauthenticated access. Expose carefully.
# - "8554:8554" # RTSP feeds
# - "8555:8555/tcp" # WebRTC over tcp
# - "8555:8555/udp" # WebRTC over udp
environment:
- "FRIGATE_RTSP_PASSWORD=" #rtsp的密码在=后面输入你的密码
- "TZ=Asia/Shanghai"
修改我中文注释的内容,然后启动即可,使用服务器ip+5000端口号,就可以访问到frigate的web界面了
配置frigate
在ui左下角找到,设置-配置编辑器
![图片[4]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260120171545485-QQ20260120-171501.png)
修改配置,下面我把配置文件常见的部分写出来,然后在合成一个配置文件。
MQTT
MQTT相信玩过homeassist会知道一些,如果后期考虑连动使用,可以配置,如果作为独立的NVR使用可以不用配置
mqtt:
enabled: true #true开启mqtt false关闭 如果独立使用可写false 其他信息删掉或者用#注释
host: #mqtt 服务器ip
port: 1883 #mqtt端口 默认1883
user: #mqtt 用户
password: #mqtt 密码
登录认证
frigate 常见使用的5000 是没有认证的,如果广域网(公网)使用请用8971端口号。
auth:
enabled: true #true开启 false关闭
reset_admin_password: false #第一次启动密码在日志中打印,如果没看到可以把此项改为true重启后可以在日志中看到密码,当密码修改完成后,需要把此项重新修改为flase,也可以用5000端口进入直接修改新密码。
检测画面内容
这里检测内容分全局和针对摄像头,全局就是默认所有摄像头都遵守这个检测内容,当然你也可以针对某个摄像头设置。
全局
objects:
track:
- person
- cat
- dog
- car
- bird
- motorcycle
- bicycle
- package
- face
针对某一个摄像头
cameras:
cam:
ffmpeg:
inputs: ... #这里是省略部分配置,并不是没有
objects: #针对单独摄像头的参数,会覆盖全局的
track:
- person
- package
FFmpeg
ffmpeg 分全局,和针对单个摄像头
全局
ffmpeg:
hwaccel_args: preset-rkmpp #preset-rkmpp是针对RK系列处理器使用mpp来硬件加速,其他平台请查看官方文档
input_args: preset-rtsp-restream
针对部分摄像头
cameras:
cam:
ffmpeg:
hwaccel_args: preset-rkmpp #针对单独摄像头的参数,会覆盖全局的
inputs: ... #这里是省略部分配置,并不是没有
一些常见预设
| 硬件平台 | 推荐预设参数 | 说明 |
|---|---|---|
| Intel (核显) | preset-vaapi | 适用于大多数 Intel CPU (J4125, N5105, N100 等) |
| Intel (第12代+) | preset-intel-qsv-h264 | 针对新一代 QuickSync 的优化 |
| Nvidia (显卡) | preset-nvidia | 需要安装 NVIDIA Container Toolkit |
| Raspberry Pi 4/5 | preset-rpi-64-h264 | 适用于树莓派 64 位系统 |
| AMD (核显) | preset-vaapi | 同样使用 VA-API 接口 |
此预设只是部分,其他请查看官方文档,这里如果我们有多个硬件支持的情况下,比如,有Intel核心显卡和nVidia显卡,就可以全局使用inte,单个摄像头使用nVidia 也可以的。
摄像头链接
这里摄像头链接有两种,一种是使用go2rtc代理后链接,或者直接链接摄像头的rstp,这两种方式都可以链接到摄像头,go2rtc代理后可以让视频流链接更多,因为部分摄像头链接IP是有上限的,如果没有过多客户端链接,也可以直接使用摄像头的rstp链接,go2rtc支持双向通话,rstp目前不支持。
go2rtc链接
go2rtc:
streams:
cam: #摄像头1主码流,用于录像和高清查看
- rtsp://user:password@ip:554/Streaming/Channels/1#video=copy
- isapi://user:password@ip:80/ #海康推荐使用isapi进行双向通话,Windows环境使用http就可以,如果是pwa模式的IOS需要HTTPS
cam_sub: #摄像头1子码流,用于检测
- rtsp://user:password@ip:554/Streaming/Channels/2#video=copy
# cam2: #摄像头2主码流,用于录像和高清查看
# - rtsp://user:password@ip:554/Streaming/Channels/1#video=copy
# cam2_sub: #摄像头2子码流,用于检测
# - rtsp://user:password@ip:554/Streaming/Channels/2#video=copy
webrtc: #webrtc
listen: :8555 #监听端口默认8555
candidates:
- 192.168.1.130:8555 #IP写frigate在内网的ip
- stun:8555 #使用内置的stun,动态获取IP
###摄像头链接参数
cameras:
cam: #摄像头名称要与streams中的主流一样,否者系统会提示此摄像头未开启视频流
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/cam #/cam路径要与streams中cam名字一致
roles:
- record
- path: rtsp://127.0.0.1:8554/cam_sub #/cam_sub路径要与streams中cam子流的名字一致
roles:
- detect
cam2: #摄像头名称要与streams中的主流一样,否者系统会提示此摄像头未开启视频流
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/cam2 #/cam路径要与streams中cam名字一致
roles:
- record
- path: rtsp://127.0.0.1:8554/cam_sub #/cam2_sub路径要与streams中cam子流的名字一致
roles:
- detect
detect:
enabled: true
如果是多个摄像头,重复在go2rtc下面添加摄像头名字即可,教程中的cam是我设定的名字,名字是可以随意的,至于摄像头的rstp链接方式各大品牌都不同,本教程中使用的是海康的,如果你也是海康摄像头可以直接用。
双向通话,海康推荐使用isapi通话质量更好一些,其他牌子可以使用novif协议进行链接,在客户端使用的时候windows 可以在非加密也就是http下双向通话,在ios使用PWA也就是网页的桌面共享图标,或者浏览器必须使用https,否者会提示摄像头不可双向通话。
rstp链接
RSTP 直接链接并不支持双向通话,和视频流传输,至少当前版本不可,后期官方如果支持请自行查看官方文档。
###摄像头链接参数
cameras:
cam: #摄像头1
enabled: true
ffmpeg:
inputs:
- path: rtsp://user:password@ip:554/Streaming/Channels/1
roles:
- record
- path: rtsp://user:password@ip:554/Streaming/Channels/2
roles:
- detect
detect:
enabled: true
cam2: #摄像头2
enabled: true
ffmpeg:
inputs:
- path: rtsp://user:password@ip:554/Streaming/Channels/1
roles:
- record
- path: rtsp://user:password@ip:554/Streaming/Channels/2
roles:
- detect
detect:
enabled: true
常见品牌RTSP列表
这里贴出来一些常见RSTP列表,大家尝试下如果有不在列表内的可以留言我在追加,或者列表内无法使用的,请给予反馈,资料收集与网络不确定百分百可用。
| 品牌名称 | 设备类型 | 主码流(高清)RTSP 链接格式 | 子码流(流畅)RTSP 链接格式 | 默认端口 |
|---|---|---|---|---|
| 海康威视 (Hikvision) | IPC/NVR | rtsp://admin:password@IP:554/Streaming/Channels/101 | rtsp://admin:password@IP:554/Streaming/Channels/102 | 554 |
| 大华 (Dahua) | IPC/NVR | rtsp://admin:password@IP:554/cam/realmonitor?channel=1&subtype=0 | rtsp://admin:password@IP:554/cam/realmonitor?channel=1&subtype=1 | 554 |
| 宇视 (Uniview) | 单机 IPC | rtsp://admin:password@IP:554/media/video0 | rtsp://admin:password@IP:554/media/video1 | 554 |
| 宇视 (Uniview) | 录像机 NVR | rtsp://admin:password@IP:554/unicast/c1/s0/live | rtsp://admin:password@IP:554/unicast/c1/s1/live | 554 |
| TP-Link / Tapo | 家用/商用 | rtsp://admin:password@IP:554/stream1 | rtsp://admin:password@IP:554/stream2 | 554 |
| 华为 (Huawei) | IPC | rtsp://admin:password@IP:554/LiveMedia/ch1/Media1 | rtsp://admin:password@IP:554/LiveMedia/ch1/Media2 | 554 |
重要提示:
请务必将表格中的以下占位符替换为你设备的实际信息:
IP:摄像头的局域网 IP 地址(例如192.168.1.64)。admin:设备管理员用户名。password:设备管理员密码。554:标准 RTSP 端口(如果你的设备更改了端口,请使用实际端口号)。
云台PTZ控制
各大平台onvif开启方式都不同,因为我使用的是海康的摄像头,海康的摄像头一般在设置-网络设置-平台接入-ONVIF。
海康的ONVIF需要创建独立账户,权限给操作员即可,部分摄像头需要给管理员。
###摄像头链接参数
cameras:
cam:
....... #配置省略了并不是没有
onvif:
host: IP #摄像头IP
port: 80 #海康默认的是80 其他平台也有使用8000的
user: onvif #在摄像头内创建的用户名
password: admin123 #对应的密码
tls_insecure: false #证书验证,在V0.16的版本后建议false 之前的版本选择true
ignore_time_mismatch: true #时间验证 true即可
录像时间
这里我个人设置的全部录制7天,触发事件90天,大家可以根据自己情况选择,录像也可以全局,或者针对单个摄像头。
全局
record:
enabled: true
retain:
days: 7
mode: all
alerts:
retain:
days: 90
mode: active_objects #motion
detections:
retain:
days: 90
mode: active_objects #motion
我这里的配置是全量录像(record)保留7天,警报录像(alerts)90天,检测事件录像(detections)90天。
大家可以根据自己的情况进行修改。
某一个摄像头
cameras:
cam:
ffmpeg:
inputs: ... #隐藏配置,并不是没有
record:
enabled: true
retain:
days: 2 # 该摄像头仅保存 2 天的全量录像
mode: all
alerts:
retain:
days: 30 # 该摄像头的警报保留 30 天
mode: active_objects
detections:
retain:
days: 30 # 该摄像头的检测保留 30 天
mode: active_objects
AI模型检测
因为rk3588的NPU是三核芯 每个核心2t算力,总共6T,这里我写了三个核心全部都使用,当然大家也可以自己修改。
detectors:
rknn:
type: rknn
num_cores: 3 #核心最大使用
model:
path: deci-fp16-yolonas_s #还有个deci-fp16-yolonas_m 大家酌情选择
width: 320
height: 320
input_pixel_format: bgr
input_tensor: nhwc
labelmap_path: /labelmap.txt
完整配置
把上面一段一段的配置都组合起来的配置,仅供参考。
mqtt:
enabled: true
host:
port: 1883
user:
password:
auth:
enabled: true
reset_admin_password: false
birdseye:
enabled: true
mode: motion
width: 1920
height: 1080
objects:
track:
- person
- cat
- dog
- car
- bird
- motorcycle
- bicycle
- package
- face
###视频解码硬件加速
ffmpeg:
hwaccel_args: preset-rkmpp
input_args: preset-rtsp-restream
go2rtc:
streams:
cam: # 主码流,用于录像和高清查看
- rtsp://user:password@ip:554/Streaming/Channels/1#video=copy
- isapi://user:password@192.168.1.125:80/
cam_sub: # 子码流,用于检测
- rtsp://user:password@ip:554/Streaming/Channels/2#video=copy
webrtc:
listen: :8555
candidates:
- 192.168.1.130:8555
- stun:8555
###摄像头链接参数
cameras:
cam:
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/cam
roles:
- record
- path: rtsp://127.0.0.1:8554/cam_sub
roles:
- detect
detect:
enabled: true
onvif:
host:
port: 80
user: onvif
password: admin123
tls_insecure: false
ignore_time_mismatch: true
record:
enabled: true
retain:
days: 7
mode: all
alerts:
retain:
days: 90
mode: active_objects #motion
detections:
retain:
days: 90
mode: active_objects #motion
detectors:
rknn:
type: rknn
num_cores: 3
model:
path: deci-fp16-yolonas_s
width: 320
height: 320
input_pixel_format: bgr
input_tensor: nhwc
labelmap_path: /labelmap.txt
version: 0.16-0
检查配置没有问题后,右上角保存并重启frigate。
画面遮罩/区域
我们要使用frigate的遮罩和区域功能来屏蔽掉时间变动导致的检测失误。
添加完之后,记得重启frigate,否则不生效。
结尾
本教程中使用的frigate版本为V0.16,专门针对RK3588等平台,如果你是X86平台也可以借鉴,当然NPU硬件加速方面是不可以借鉴的,如果配置过程中有什么问题,大家可以在下方留言,或者来QQ群提问。

![图片[5]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260121094006903-QQ20260121-093954.png)
![图片[6]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260121094327838-QQ20260121-094314.png)
![图片[7]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260121094917177-QQ20260121-094726.png)
![图片[8]-frigate,rk3588,ai,nvr](https://www.lxg2016.com/wp-content/uploads/2026/01/20260121094927273-QQ20260121-094900.png)











暂无评论内容