轻量级的网络视频录像机OneNVR
简介
什么是 OneNVR ?
OneNVR 是一个简单轻量的网络视频录像机(NVR),旨在运行于廉价硬件上,例如带有硬盘驱动器的 Raspberry Pi,支持从网络摄像头 24/7 录制视频流。用户可以通过本地网页界面浏览录制的文件。
主要特点
轻量级设计:专为低成本硬件优化,易于部署。
视频流保存:从网络摄像头录制的视频保存为 5 分钟的文件,以防文件损坏导致数据丢失。
自动文件处理:每日自动将前一天的视频文件连接为 24 小时的单一文件,并删除过期视频。
灵活配置:通过 config.yaml 文件配置,如视频保留天数、合并时间和删除时间等。
**使用 ffmpeg**:依赖 ffmpeg 进行视频流的连接和录制。
容器化部署:支持 Docker 部署,易于安装和管理。
应用场合
家庭监控:适合家庭用户用于监控家庭安全。
小型企业:可用于小型企业的安全监控,成本低廉。
DIY 项目:适合爱好者和开发者进行自定义监控解决方案。
总之,OneNVR 是一个理想的选择,适合需要简单、低成本视频监控解决方案的用户。
准备
网络摄像头
OneNVR 是个网络视频录像机,所以首先要有用于录像的网络摄像头,其次要知道其接像地址,例如联想 C2E
XML/HTML代码
- # 主流:1080P@15@H.264
- rtsp://username:password@ip:port/live/ch00_0
- # 子流:640*360@15@H.264
- rtsp://username:password@ip:port/live/ch00_1
- username:用户名,登录联想慧眼 app 的手机号;
- password:密码,登录联想慧眼 app 的密码;
- ip:为设备的局域网 IP;
- port:端口号为 554;
其他品牌摄像头可以百度常用摄像头取流地址,具体自己摄像头可以搜索自己品牌型号即可,比如本博客就有萤石摄像头的rtsp设置方法。
配置文件
接下来就可以准备配置文件 config.yaml
XML/HTML代码
- cameras:
- -name:lenovo
- rtsp_url:rtsp://username:password@192.168.0.128:554/live/ch00_0
- codec:copy
- interval:300
- retention_days:7
- concatenation:true
- concatenation_time:"02:00"
- deletion_time:"01:00"
配置字段的简单说明如下:
cameras:一个列表,包含多个摄像头的配置。
name:- 摄像头的名称,用于标识该摄像头。
rtsp_url:摄像头的 RTSP 流 URL,用于获取视频流。可以包括用户名和密码。
codec:视频编码格式,通常是 copy 表示直接复制流而不进行重新编码。
interval:捕获视频流的时间间隔(单位为秒)。
retention_days:视频保留天数,表示视频文件将在系统中保留的天数。
concatenation:布尔值,指示是否启用视频片段的连接。
concatenation_time:指定连接视频片段的时间点(格式为 HH:MM)。
deletion_time:指定删除视频片段的时间点(格式为 HH:MM)。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 onenvr ,选择第一个 cyb3rdoc/onenvr,版本只有一个 latest 版本,双击直接下载。
在 docker 文件夹中,创建一个新文件夹 onenvr,并在其中建两个子文件夹 config 和 storage
将前面准备的 config.yaml 文件放入到 config 目录中
XML/HTML代码
- 文件夹 装载路径 说明
- docker/onenvr/config /config 存放设置文件
- docker/onenvr/storage /storage 存放录像文件
端口
本地端口不冲突就行,不确定的话可以用命令查一下
XML/HTML代码
- # 查看端口占用
- netstat -tunlp | grep 端口号
XML/HTML代码
- 本地端口 容器端口
- 5334 5000
环境
XML/HTML代码
- 变量 值
- TZ 设为 Asia/Shanghai
- DEBUG 设为 false
命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
XML/HTML代码
- # 新建文件夹onenvr和子目录
- mkdir -p /volume1/docker/onenvr/{config,storage}
- # 进入onenvr目录
- cd /volume1/docker/onenvr
# 将 config.yaml 放入 config 目录
# 运行容器
XML/HTML代码
- docker run -d \
- --restart unless-stopped \
- --name onenvr \
- --hostname onenvr \
- -p 5334:5000 \
- -v $(pwd)/config:/config \
- -v $(pwd)/storage:/storage \
- -e TZ=Asia/Shanghai \
- -e DEBUG=false \
- cyb3rdoc/onenvr:latest
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
XML/HTML代码
- services:
- onenvr:
- image:cyb3rdoc/onenvr:latest
- hostname:onenvr
- container_name:onenvr
- restart:unless-stopped
- ports:
- -"5334:5000"
- environment:
- -TZ=Asia/Shanghai
- -DEBUG=false
- volumes:
- -./config:/config
- -./storage:/storage
然后执行下面的命令
XML/HTML代码
- # 新建文件夹 onenvr 和 子目录
- mkdir -p /volume1/docker/onenvr/{config,storage}
- # 进入 onenvr 目录
- cd /volume1/docker/onenvr
- # 将 docker-compose.yml 放入当前目录
- # 将 config.yaml 放入 config 目录
- # 一键启动
- docker-compose up -d
运行
在浏览器中输入 http://群晖IP:5334 就能看到主界面
在 FileStation 中能找到对应文件名的录像文件,根据我们的设置,前一天的录像会合并成一个文件,而当天的文件,则是 5 分钟一段的。
其他
使用容器可以在普通任意Linux系统上跑,也可以在爱快或者Openwrt容器中跑,轻量方便。
下载配置
XML/HTML代码
- wget -P /opt/onenvr/config https://gh-proxy.com/raw.githubusercontent.com/cyb3rdoc/onenvr/refs/heads/main/src/config/config.yaml
XML/HTML代码
- docker run -d --restart unless-stopped --name onenvr --hostname onenvr -p 8000:5000 -v /opt/onenvr/config:/config -v opt/onenvr/storage:/storage -e TZ=Asia/Shanghai -e DEBUG=false cyb3rdoc/onenvr:latest
LightNVR - 轻量级网络视频录像机
LightNVR 是一款用 C 语言编写的微型、内存优化的网络视频录像机软件。虽然最初设计用于资源受限的设备(例如只有 256MB RAM 的 Ingenic A1 SoC),但它可以在任何 Linux 系统上运行。
概述
LightNVR 提供轻量级但功能强大的解决方案,用于录制和管理 IP 摄像机流。它旨在在低功耗、内存受限的设备上高效运行,同时仍提供基本的 NVR 功能。
主要特点
跨平台:可在任何 Linux 系统上运行,从嵌入式设备到完整服务器
内存高效:针对低内存设备(SBC 和某些 SoC)进行了优化
流支持:处理最多 16 个视频流(具有内存优化缓冲)
协议支持:RTSP 和 ONVIF(基本配置文件)
编解码器支持:H.264(主要)、H.265(如果资源允许)
物体检测:可选的 SOD 集成,用于运动和物体检测(支持 RealNet 和 CNN 模型)
分辨率支持:每个流高达 1080p(可配置较低分辨率)
帧率控制:可配置为每条流 1-15 FPS,以减少资源使用
标准格式:以标准 MP4/MKV 容器形式记录,并带有适当的索引
现代 Web 界面:使用 Tailwind CSS 和 Preact 构建的响应式 UI
存储管理:自动保留策略和磁盘空间管理
可靠性:断电或系统故障后自动恢复
资源优化:流优先级管理有限的 RAM
系统要求
处理器:任何与 Linux 兼容的处理器(ARM、x86、MIPS 等)
内存:未知最小 RAM(对于多个流更推荐使用)
存储:任何操作系统可访问的存储设备
网络:以太网或 WiFi 连接
操作系统:Linux 内核 4.4 或更新版本
快速入门
安装
从源代码构建:
XML/HTML代码
- # Clone the repository
- git clone https://github.com/opensensor/lightnvr.git
- cd lightnvr
- # Build the software
- ./scripts/build.sh --release
- # Install (requires root)
- sudo ./scripts/install.sh
配置:
XML/HTML代码
- # Edit the configuration file
- sudo nano /etc/lightnvr/lightnvr.conf
启动服务:
XML/HTML代码
- sudo systemctl start lightnvr
访问 Web 界面:http://your-device-ip:8080
默认账号:admin 密码:admin
Docker 安装
XML/HTML代码
- docker run -d \
- --name lightnvr \
- --net=host \
- -p 8080:8080 \
- -v /opt/nvr/config:/etc/lightnvr \
- -v /opt/nvr/recordings:/var/lib/lightnvr/recordings \
- ghcr.io/opensensor/lightnvr:latest
此项目更像是商业监控录像机,功能比上面的更强大,不过稍微复杂,目前测试在录制方面还稍微有些bug,不是很稳定。
基于 GB28181 - 2022 标准的 Golang WVP NVR 平台,支持 RTMP/RTSP 协议,集成 ZLMediaKit 处理流媒体。(太专业)
需要专业硬盘录像机或者摄像头支持,是专业NVR解决方案,个人无法使用,适合商业场景。
wvp-GB28181-pro 开箱即用的28181协议视频平台
这个项目是一个完整的开箱即用的商业开源NVR系统,是比上面更加完善的一个完整系统,适合专业用户在商业环境应用。
ZLMediaKit 一个基于C++11的高性能运营级流媒体服务框架
ZLMediaKit是一个开源高效高性能的流媒体服务器框架,可用于商业开发,开发者可以基于此项目开发。