AI网络视频录像机Viseron

简介

什么是 Viseron ?

Viseron 是一款自托管的本地网络视频录像机(NVR)和人工智能计算机视觉软件。它旨在提供易于设置和使用的解决方案,同时具备强大和灵活的功能,适合在本地网络中运行,无需依赖外部服务或云平台。

主要特点

  • 24/7 持续录制:具备全天候录像功能,确保不遗漏任何重要时刻。
  • 多层存储:支持不同保留策略的多种存储介质。
  • 事件时间线视图: 提供事件的时间线视图,便于用户快速查看和管理录像。
  • 内置认证系统:- 确保系统的安全性。
  • 对象检测:支持通过 YOLOv3YOLOv4YOLOv7TensorFlow 进行对象检测。
  • 运动检测:实时监测运动情况。
  • 人脸识别:通过 CompreFacedlib 等技术进行人脸识别。
  • 图像分类和车牌识别:利用 TensorFlowCodeProject.AI 进行图像分类和车牌识别。
  • 响应式移动友好界面:使用 TypeScriptReact 构建的用户界面,适应各种设备。
  • 硬件加速支持:支持 CUDAGoogle Coral EdgeTPU 等硬件加速选项,以优化系统资源使用。
  • 多平台支持:可在任何运行 Linuxamd64aarch64armhf 机器上使用,专门构建的镜像支持 Raspberry PiNVIDIA Jetson Nano
  • 区域和掩码设置:可以限制检测区域以减少误报。
  • MQTT 和 Telegram 支持:支持通过 MQTT 进行设备控制和通知。

应用场景

  • 家庭监控:用户可以在家庭环境中使用 Viseron 监控安全,确保家人和财产的安全。
  • 办公室监控:在办公室环境中监控员工活动,防止盗窃和其他安全问题。
  • 商业场所:商店或其他商业环境中使用,以改善安全管理和顾客体验。
  • 教育机构:学校可以使用 Viseron 进行校园安全监控,保护学生和教职员工的安全。

Viseron 提供了一种灵活且功能强大的监控解决方案,适用于各种需要视频监控的场合。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 viseron ,选择第一个 roflcoopter/viseron,版本选择 latest

本文写作时, latest 版本对应为 3.1.1

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 新建文件夹 viseron 和 子目录
mkdir -p /volume1/docker/viseron/{config,event_clips,segments,snapshots,thumbnails}

# 进入 viseron 目录
cd /volume1/docker/viseron

# 运行容器
docker run -d \
--restart unless-stopped \
--name viseron \
--shm-size=1024mb \
-p 8888:8888 \
-v $(pwd)/segments:/segments \
-v $(pwd)/snapshots:/snapshots \
-v $(pwd)/thumbnails:/thumbnails \
-v $(pwd)/event_clips:/event_clips \
-v $(pwd)/config:/config \
-v /etc/localtime:/etc/localtime:ro \
roflcoopter/viseron:latest

关于卷的说明

文件夹 装载路径 说明
docker/viseron/config /config 存放存储配置文件、数据库
docker/viseron/segments /segments 存放存储录像(视频片段)
docker/viseron/snapshots /snapshots 存储来自对象检测、运动检测等的快照
docker/viseron/thumbnails /thumbnails 存储由 trigger_event_recording 触发的录像缩略图
docker/viseron/event_clips /event_clips 存储由 create_event_clip 创建的事件剪辑
/etc/localtime /etc/localtime 将主机的本地时间文件挂载到容器中,确保容器使用主机的时区设置,:ro 表示以只读模式挂载

其他参数

--shm-size=1024mb:设置容器的共享内存大小为 1024 MB,适用于需要大量共享内存的应用

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: '3'

services:
viseron:
container_name: viseron
image: roflcoopter/viseron:latest
restart: unless-stopped
shm_size: "1024mb"
# network_mode: host
# privileged: true
ports:
- 8888:8888
volumes:
- ./segments:/segments
- ./snapshots:/snapshots
- ./thumbnails:/thumbnails
- ./event_clips:/event_clips
- ./config:/config
- /etc/localtime:/etc/localtime:ro

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 viseron 和 子目录
mkdir -p /volume1/docker/viseron/{config,event_clips,segments,snapshots,thumbnails}

# 进入 viseron 目录
cd /volume1/docker/viseron

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8888 就能看到主界面

进入 Settings

Configuration 的默认设置

下面是老苏的示例,还是使用的联想的摄像头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
## Start by adding some cameras
ffmpeg:
camera:
camera_1: # This value has to be unique across all cameras
name: lenove
host: 192.168.0.128
port: 554
path: /live/ch00_0
username: <your username>
password: <your password>

## Then add an object detector
darknet:
object_detector:
cameras:
camera_1: # Attach detector to the configured camera_1 above
fps: 1
scan_on_motion_only: false # Scan for objects even when there is no motion
labels:
- label: person
confidence: 0.75
trigger_event_recording: true

## You can also use motion detection
mog2:
motion_detector:
cameras:
camera_1: # Attach detector to the configured camera_2 above
fps: 1

## To tie everything together we need to configure one more component.
nvr:
camera_1: # Run NVR for camera_1

# Now you can restart Viseron and you should be good to go!

摄像头配置 (ffmpeg)

1
2
3
4
5
6
7
8
9
ffmpeg:
camera:
camera_1: # 这个值必须在所有摄像头中唯一
name: lenove # 摄像头的名称
host: 192.168.0.128 # 摄像头的 IP 地址
port: 554 # RTSP 流的端口(通常为 554)
path: /live/ch00_0 # 摄像头视频流的路径
username: <your username> # 访问摄像头的用户名
password: <your password> # 访问摄像头的密码
  • name: 摄像头的名称,用于标识和管理。
  • host: 摄像头的网络地址,通常是局域网 IP。
  • port: 用于访问视频流的端口,554 是 RTSP 的默认端口。
  • path: 指向摄像头视频流的具体路径。
  • usernamepassword: 用于身份验证的凭据。

对象检测器配置 (darknet)

1
2
3
4
5
6
7
8
9
10
darknet:
object_detector:
cameras:
camera_1: # 将检测器附加到上述配置的 camera_1
fps: 1 # 每秒处理的帧数
scan_on_motion_only: false # 即使没有运动也进行对象扫描
labels:
- label: person # 要检测的对象标签
confidence: 0.75 # 检测信心阈值
trigger_event_recording: true # 检测到目标时触发记录事件
  • fps: 指定每秒处理多少帧,以控制性能和检测频率。
  • scan_on_motion_only: 设置为 true 时,只有在检测到运动时才会扫描对象。
  • labels: 要检测的对象类型,如 person,可以根据需要添加其他标签。
  • confidence: 检测的信心值,低于此值的检测将被忽略。
  • trigger_event_recording: 如果设置为 true,在检测到指定对象时会开始录制视频。

运动检测器配置 (mog2)

1
2
3
4
5
mog2:
motion_detector:
cameras:
camera_1: # 将检测器附加到配置的 camera_1
fps: 1 # 每秒处理的帧数
  • fps: 指定每秒处理的帧数,影响运动检测的灵敏度和性能。

NVR 配置 (nvr)

1
2
nvr:
camera_1: # 为 camera_1 运行 NVR
  • camera_1: 指定要进行录像的摄像头,NVR 将管理视频存储和录制。
  • 以上只是一个简单的示例,更详细的使用设置,请参考官方的文档: https://viseron.netlify.app/docs/documentation/configuration
  • 更简单的方法是,用 deepseek 生成

Save 保存,然后 Restart 重启

如果没问题的话,会看到摄像头的画面

参考文档

roflcoopter/viseron: Self-hosted, local only NVR and AI Computer Vision software. With features such as object detection, motion detection, face recognition and more, it gives you the power to keep an eye on your home, office or any other place you want to monitor.
地址:https://github.com/roflcoopter/viseron

Homepage | Viseron
地址:https://viseron.netlify.app/

Introduction | Viseron
地址:https://viseron.netlify.app/docs/documentation