前言
部署这个最主要的动力是想装监控,但又不想让数据上云。毕竟隐私还是掌握在自己手里比较好一点!
如果你也是比较在意隐私安全的,部署前先考虑下面几点:
- 不使用摄像头自带的 APP 意味着部分功能损失,比如双向语音、摄像头云台、消息通知等
- 建议选择使用 POE 供电的摄像头(只需要一根网线就行,方便布线)
- 需要 POE 网线
- 需要 POE 交换机或录像机
- 强烈建议有一块 TPU,比如 Google Coral Accelerator
可能错误的建议:如果不想损失 APP 的功能,可以只用 APP 监看,用 frigate 录像。但是经过 APP 是否会上云就不得而知了,尤其是那些需要登录才能使用的~
选监控摄像头
一般只要支持 onvif 协议就行!在这里对几个买过的品牌做下分析(均为主观意见):
萤石:不推荐。
不支持 onvif 协议,且传输都用自有协议加密(为了推广萤石云嘛)~只能用摄像头,是真正意义上的摄像头!!!没有云台,没有语音。。。也就是只能固定一个视角,并且还要是初始化之后的视角,否则摄像头一重启,视角就变了,没有任何地方可以拉回来。。。而且不稳定,一天至少会自己断掉重启一次,导致 frigate 有近 20 分钟录像录不上,当然,这可能是个例!
TP-LINK:可以。
支持 onvif 协议,至少云台有保证了!不过我买的这个缩放似乎用了 2 个摄像头组成的取巧办法,应该是通过软件调节的,在 frigate 中不支持!稳定性可以,在 frigate 日志中重来没出现过这个摄像头的错误!
大华:没用过但我对它最为期待。
frigate 也推荐的摄像头(当然 TP-LINK 也在列,国外好像叫 Tapo),好像支持云台,缩放(有功能的话),没用过就不评价了!
海康威视:没用过但我应该不会买。
原因无他,因为萤石是我买的第一个摄像头。。。
docker compose 部署
可以参考官方文档来部署,或者以下是我威联通 NAS 上的配置,供参考:
version: '3'
services:
frigate:
restart: unless-stopped
container_name: frigate
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: 256m # 给 256M 共享内存
volumes:
- /share/Container/dockerdata/frigate/config:/config:rw # 配置文件
- /share/MEDIA2/frigate_storage:/media/frigate:rw # 录像数据存储
- type: tmpfs # 添加 1G 内存用做数据缓冲
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- "5500:5000"
# - "8554:8554" # RTSP feeds
# - "8555:8555/tcp" # WebRTC over tcp
# - "8555:8555/udp" # WebRTC over udp
environment:
- TZ=Asia/Shanghai
- FRIGATE_RTSP_PASSWORD=pwd123 # 可接 HA 等使用
- LIBVA_DRIVER_NAME=i965 # Intel 系列 CPU 使用
privileged: true
devices:
- /dev/bus/usb:/dev/bus/usb # 由于我有 TPU 且是 USB 口的,这里接入 USB 设备
- /dev/dri/renderD128:/dev/dri/renderD128 # 录制视频时使用硬解,节省 CPU 占用
networks:
- mynet
networks:
mynet:
external: true
frigate 配置添加(初次)
到此,先别急着启动起来,在上面 /share/Container/dockerdata/frigate/config 配置文件目录下新建 config.yml 文件,添加一下摄像头配置:
mqtt:
enabled: false
cameras:
your_camera:
enabled: true
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:554/rtsp # 摄像头的 rtsp 流
roles:
- detect
RTSP 流格式
以下为一些摄像头的 RTSP 流,供参考:
萤石:
// 例如: rtsp://admin:LAUWEN@192.168.31.108:554/h264/ch1/main/av_stream
rtsp://admin:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
参数说明:
- username: 用户名,默认为:admin。
- password: 密码,默认为摄像头底座贴纸上的验证码。
- ip: 为设备IP,例如:192.168.31.108。
- port: 端口号,默认:554,若为默认可不填写。
- codec:有h264、MPEG-4、mpeg4这几种。
- channel: 通道号,起始为1。例如通道1,则为ch1。
- subtype: 码流类型,主码流为main,辅码流为sub。
TP-LINK:
主码流为:rtsp://username:password@ip:port/stream1
子码流为:rtsp://username:password@ip:port/stream2
其中:
(1) username:用户名,如admin;
(2) password:密码,如123456;
(3) ip:设备IP,如192.168.1.60;
(4) port:RTSP端口,默认为554,若为默认可不填;
(5) stream:码流类型,主码流为stream1,子码流为stream2。
举例说明:
摄像机的IP地址为192.168.1.60,用户名是admin,密码是123456,摄像机的RTSP端口为554。那么该摄像机
主码流的RTSP取流地址为:rtsp://admin:123456@192.168.1.60:554/stream1
子码流的RTSP取流地址为:rtsp://admin:123456@192.168.1.60:554/stream2
运行
Container Station 中的应用程序直接创建就可以了,不出意外的话,通过 5500 端口,就能看到 frigate 的 web 界面啦~
配置都是在 config 菜单中通过 json 格式来进行配置的,可以参考官方文档来进行,这里也给出一下我 NAS 上的配置,供参考:
mqtt:
enabled: false
ffmpeg:
hwaccel_args: preset-vaapi
# 有 coral 的开启,否则删除下面的 detectors(默认通过 CPU 识别)
detectors:
coral:
type: edgetpu
device: usb
# 录制配置
record:
enabled: true
retain: # 全部录像保留3天
days: 3
mode: all
events:
pre_capture: 1 # 检测录像前提前 1 秒
post_capture: 3 # 检测录像后延后 3 秒
retain: # 检测录像保留 10 天
default: 10
# 检测快照保留 30 天
snapshots:
enabled: true
retain:
default: 30
# 默认检测物体:人
objects:
track:
- person
# - car
# 摄像头配置
cameras:
tp-link_camera:
onvif:
host: 192.168.12.232
port: 2020
user: admin
password: 123456
ffmpeg:
inputs:
- path: rtsp://admin:123456@192.168.12.232:554/stream1
roles:
- detect
- record
detect:
width: 1280
height: 720
fps: 5
ezviz_camera:
ffmpeg:
inputs:
- path: rtsp://admin:OCIKEA@192.168.12.231:554/h265/ch1/main/av_stream
roles:
- detect
- record
detect:
width: 1280
height: 720
fps: 5
感谢
官方文档里面的配置已经很详细了,直接参考官方的即可:
Comments NOTHING