记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

轻量级的网络视频录像机OneNVR

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

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):