找回密码
 注册

便捷登录,只需一步

搜索
查看: 112|回复: 0

海康CVR云存储替代方案

[复制链接]

1万

主题

14万

回帖

30万

积分

大学四年级

wfits币
42084 个
注册时间
2009-11-29
UID
35205

宣传大使勋章

发表于 2026-1-28 18:17 | 显示全部楼层 |阅读模式
一、方案概述

1.1 方案目标

基于ZLMediaKit高性能流媒体服务器与EasyCVR视频管理平台,构建一套支持多协议接入、实时流媒体分发、录像存储管理、智能告警联动的一体化流媒体系统。实现异构设备统一接入、全终端视频预览、精细化存储管控及高效事件追溯,适配中小型到大型监控场景的业务需求,兼顾系统稳定性、扩展性与存储安全性。

1.2 核心技术栈

- 流媒体服务:ZLMediaKit(开源高性能流媒体服务器,支持RTSP/RTMP/HTTP-FLV/HLS等协议转换与分发,低延迟、高并发处理能力);

- 管理平台:EasyCVR(多协议视频融合管理平台,支持设备接入、用户权限、录像管理、告警推送等功能,提供可视化操作界面);

- 存储架构:根据场景适配NVR本地存储、IP-SAN块存储、CVR安防专用存储,保障视频数据安全与高效检索;

- 运行环境:Linux(CentOS 7/8或Ubuntu 20.04)64位操作系统,支持X86架构服务器部署。

1.3 适用场景

本方案可灵活适配多类场景:中小型场景(如园区、楼宇监控,≤128路通道)、中大型场景(如城市安防、交通枢纽,128-512路通道)、超大型场景(如省级监控联网,>512路通道),满足不同规模下的流媒体传输与存储需求。

二、系统架构设计

2.1 整体架构分层

系统采用“感知层-流媒体层-管理层-存储层-应用层”五级架构,各层协同联动,确保数据流转高效、管理集中、存储可靠。

1. 感知层:各类前端设备(IPC摄像机、NVR、编码器等),支持GB28181、RTSP、RTMP、海康/大华SDK等协议,实现视频数据采集与上行传输;

2. 流媒体层:ZLMediaKit服务器集群,负责前端视频流的接入、协议转换、转码、分发,为管理平台与终端提供低延迟流媒体服务;

3. 管理层:EasyCVR平台,实现设备统一管理、用户权限管控、录像计划配置、告警联动、视频预览与回放等核心功能,对接ZLMediaKit获取流媒体数据;

4. 存储层:根据场景选择存储方案,实现视频录像的本地/分布式存储、数据备份与故障冗余,保障数据完整性;

5. 应用层:PC客户端、移动端APP、电子大屏、电视墙等终端,通过EasyCVR提供的接口或可视化界面访问视频资源与管理功能。

2.2 核心数据流

1. 前端设备采集视频流,通过对应协议(如RTSP、GB28181)推送至ZLMediaKit服务器;

2. ZLMediaKit对视频流进行协议转换(如RTSP转HTTP-FLV)与转码处理,同时分发给EasyCVR平台与前端预览终端;

3. EasyCVR根据预设录像计划,指令ZLMediaKit将视频流写入对应存储设备,生成结构化录像文件;

4. 用户通过应用终端访问EasyCVR,发起预览、回放请求,EasyCVR调度ZLMediaKit分发实时流或从存储设备调取历史录像流,返回至终端。

三、硬件与软件配置要求

3.1 硬件配置(按场景分级)

场景类型

服务器配置(ZLMediaKit/EasyCVR)

存储设备配置

网络要求

中小型(≤128路)

CPU:Intel Xeon E3/E5(4核8线程);内存:16GB DDR4;硬盘:系统盘240GB SSD,缓存盘1TB SSD;网卡:双千兆网卡

NVR(48盘位),搭配4TB SATA硬盘(按1Mbps码流/路,7天存储计算,128路需约149TB,配置38块4TB硬盘)

千兆局域网,核心交换机带宽≥10G,前端到服务器带宽≥2Mbps/路

中大型(128-512路)

CPU:Intel Xeon Gold(8核16线程)×2;内存:64GB DDR4;硬盘:系统盘512GB SSD,缓存盘2TB SSD×2;网卡:万兆网卡×2

IP-SAN存储阵列(支持iSCSI协议),容量≥600TB,缓存≥128GB,支持冗余电源

万兆局域网,核心交换机带宽≥40G,划分VLAN隔离流媒体与管理流量

超大型(>512路)

ZLMediaKit集群(3-5节点),每节点配置同中大型;EasyCVR集群(2节点主备)

CVR存储集群(安防专用,支持前端直写),容量≥1.5PB,支持纠删码技术,冗余备份

光纤网络,核心交换机带宽≥100G,支持链路聚合与负载均衡

3.2 软件配置

- 操作系统:CentOS 7.9 64位(推荐,稳定性强,适配开源组件);

- 流媒体服务:ZLMediaKit(最新稳定版,编译安装支持GPU转码);

- 管理平台:EasyCVR(v3.7及以上版本,支持集群部署与多存储对接);

- 依赖组件:FFmpeg(4.4及以上,用于转码)、Nginx(辅助静态资源访问)、MariaDB(存储EasyCVR配置数据);

- 客户端:支持Chrome/Firefox浏览器、EasyCVR移动端APP(iOS/Android)、电视墙客户端。

四、部署实施步骤

4.1 环境准备(Linux系统)

4.1.1 系统初始化

# 关闭防火墙与SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 安装依赖组件
yum install -y gcc gcc-c++ cmake git wget openssl-devel pcre-devel zlib-devel

# 安装FFmpeg
wget https://johnvansickle.com/ffmpeg ... amd64-static.tar.xz
tar -xvf ffmpeg-release-amd64-static.tar.xz
mv ffmpeg-*-amd64-static/ffmpeg /usr/bin/
ffmpeg -version  # 验证安装

4.1.2 安装MariaDB数据库

yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation  # 初始化数据库(设置root密码)

# 创建EasyCVR数据库
mysql -u root -p
create database easycvr default charset utf8mb4;
grant all privileges on easycvr.* to 'easycvr'@'localhost' identified by 'EasyCVR@123';
flush privileges;
exit;

4.2 ZLMediaKit部署

# 克隆源码并编译
git clone https://gitee.com/xia-chu/ZLMediaKit.git
cd ZLMediaKit
git submodule update --init --recursive
mkdir build && cd build
cmake .. -DENABLE_WEBRTC=ON -DENABLE_GPU=ON  # 开启WebRTC与GPU转码(需显卡支持)
make -j$(nproc)

# 启动ZLMediaKit服务
cd ../release/linux/Debug
./MediaServer -d  # 后台运行

# 验证服务(默认端口80,访问管理界面)
curl http://localhost:80  # 出现ZLMediaKit页面即为成功

核心配置:修改config.ini文件,设置端口(如RTSP端口554、RTMP端口1935)、转码参数、流存储路径(临时存储),保存后重启服务。

4.3 EasyCVR部署

# 下载EasyCVR安装包(官网获取对应版本)
wget https://www.easycvr.com/download/EasyCVR-Linux-x86-64.tar.gz
tar -xvf EasyCVR-Linux-x86-64.tar.gz -C /opt/
cd /opt/EasyCVR/

# 配置数据库连接
vi config/db.ini
# 修改以下内容
[db]
type = mysql
host = 127.0.0.1
port = 3306
user = easycvr
password = EasyCVR@123
name = easycvr

# 启动EasyCVR服务
chmod +x start.sh stop.sh
./start.sh

# 验证服务(默认端口18000)
curl http://localhost:18000  # 出现登录页面即为成功

初始化配置:通过浏览器访问http://服务器IP:18000,使用默认账号easycvr/easycvr登录,强制修改密码后进入后台,完成基础配置(时区、端口、告警方式)。

4.4 设备接入配置

4.4.1 前端设备接入EasyCVR

1. 登录EasyCVR后台,进入【设备】-【设备管理】,点击【添加设备】;

2. 根据设备协议选择接入类型:


  - 拉流模式(RTSP/RTMP/ONVIF):填写设备名称、IP、端口、用户名密码,选择协议类型,系统自动生成码流信息;

  - 推流模式(RTMP):生成推流地址,配置到前端设备或OBS工具,完成推流;

  - 国标协议(GB28181):进入【配置】-【设备接入】,设置SIP服务器信息,前端设备配置对应参数后主动注册。

3. 添加通道后,验证设备在线状态,测试视频预览是否正常。

4.4.2 EasyCVR对接ZLMediaKit

进入EasyCVR后台【配置】-【流媒体配置】,选择“自定义流媒体服务器”,填写ZLMediaKit服务器IP、端口(默认80),保存后系统自动将前端流转发至ZLMediaKit,由其负责分发与转码。

4.5 存储模块部署与配置

4.5.1 方案1:NVR本地存储(中小型场景)

1. 将NVR设备接入局域网,确保与EasyCVR服务器网络互通;

2. 在EasyCVR【设备管理】中添加NVR设备(通过ONVIF或厂商SDK),获取NVR存储通道;

3. 进入【录像管理】-【录像计划】,为前端通道绑定NVR存储,设置录像模式(定时录像、告警录像)、存储周期,保存后NVR自动接收并存储视频流。

4.5.2 方案2:IP-SAN块存储(中大型场景)

1. 配置IP-SAN存储阵列,创建iSCSI目标与LUN,设置访问权限(允许EasyCVR服务器访问);

2. 在EasyCVR服务器挂载IP-SAN存储:
        yum install -y iscsi-initiator-utils
iscsiadm -m discovery -t st -p IP-SAN地址
iscsiadm -m node -l  # 登录iSCSI目标
mkfs.ext4 /dev/sdb1  # 格式化LUN
mkdir /mnt/san_storage
echo "/dev/sdb1 /mnt/san_storage ext4 defaults 0 0" >> /etc/fstab
mount -a  # 挂载存储

3. 进入EasyCVR【存储管理】,添加“本地存储”,选择挂载路径/mnt/san_storage,设置分区大小、存储策略,完成后录像文件自动写入IP-SAN。

4.5.3 方案3:CVR集群存储(超大型场景)

1. 部署CVR存储集群,配置前端直写模式,支持GB28181协议接入;

2. 在EasyCVR【存储管理】中添加“CVR存储”,填写CVR集群地址、端口、认证信息,对接存储资源池;

3. 设置存储冗余策略(纠删码模式,允许1-2块硬盘故障)、数据备份周期,EasyCVR调度前端流直写CVR,实现分布式存储与故障自愈。

五、系统测试与优化

5.1 功能测试

1. 视频预览:通过PC端、移动端访问EasyCVR,测试不同协议、不同终端的视频预览效果,确保无卡顿、低延迟;

2. 录像存储与回放:触发录像后,检查存储设备是否生成录像文件,测试按时间、通道检索回放,确保录像完整;

3. 告警联动:模拟前端告警(如移动侦测),验证系统是否触发告警推送(邮件、微信),并关联告警录像;

4. 并发测试:通过多终端同时预览、回放,测试ZLMediaKit并发处理能力,确保≤设计并发量时系统稳定。

5.2 性能优化

- 流媒体优化:ZLMediaKit开启GPU转码,降低CPU占用;设置合理码率(1080P建议2Mbps),减少带宽消耗;

- 存储优化:开启录像循环覆盖(按容量/周期),定期清理过期数据;IP-SAN/CVR开启缓存加速,提升读写性能;

- 网络优化:流媒体流量与管理流量划分VLAN;核心交换机开启链路聚合,提升传输带宽;

- 系统优化:Linux系统调整内核参数(增大文件描述符限制),优化数据库连接池,提升系统稳定性。

六、运维管理与故障排查

6.1 日常运维

1. 设备监控:通过EasyCVR后台【设备状态】实时查看前端设备、流媒体服务器、存储设备在线状态,设置设备离线告警;

2. 存储管理:定期检查存储容量,确保剩余空间≥20%;备份重要录像文件至异地存储;

3. 日志管理:ZLMediaKit日志路径/opt/ZLMediaKit/release/linux/Debug/log,EasyCVR日志路径/opt/EasyCVR/log,定期收集分析日志,排查潜在问题;

4. 版本更新:定期更新ZLMediaKit与EasyCVR至稳定版本,修复漏洞,优化功能。

6.2 常见故障排查

故障现象

排查方法

前端设备无法接入EasyCVR

1. 检查设备网络连通性(ping测试);2. 验证设备协议配置与EasyCVR接入参数一致;3. 确认设备端口未被防火墙拦截;4. 检查设备用户名密码正确性。

视频预览卡顿、延迟高

1. 降低视频码率或分辨率;2. 检查网络带宽占用,避免拥堵;3. 开启ZLMediaKit GPU转码,优化分发策略;4. 排查前端设备硬件性能瓶颈。

录像无法存储或回放失败

1. 检查存储设备在线状态与挂载路径有效性;2. 验证录像计划配置是否正确;3. 查看存储容量是否充足;4. 检查存储设备权限设置(是否允许EasyCVR写入)。

ZLMediaKit服务异常退出

1. 查看日志文件定位错误原因;2. 检查系统资源(CPU、内存)是否耗尽;3. 验证配置文件是否有误,恢复默认配置重试;4. 重新编译安装ZLMediaKit。

七、风险控制与应急预案

7.1 风险控制

- 数据安全风险:存储设备开启冗余备份(如RAID 5/6、纠删码);定期备份重要录像;设置存储访问权限,防止数据泄露;

- 系统稳定性风险:ZLMediaKit与EasyCVR采用集群部署(中大型场景),实现主备切换;服务器配置冗余电源、散热系统,避免硬件故障;

- 网络风险:核心网络设备(交换机、路由器)冗余部署;开启网络风暴抑制,防止流量攻击;采用HTTPS加密传输管理数据。

7.2 应急预案

1. 存储设备故障:立即切换至备用存储设备;故障恢复后,通过EasyCVR同步历史录像至主存储;

2. 流媒体服务器故障:集群环境下自动切换至备用节点;单机环境下重启服务,若无法恢复则重新部署并恢复配置;

3. 网络中断:排查链路故障,重启网络设备;紧急情况下启用4G/5G备用网络,保障关键通道视频传输;

4. 数据丢失:通过存储冗余机制恢复数据;若冗余失效,从异地备份中恢复重要录像。

八、方案总结与扩展建议

8.1 方案总结

本方案基于ZLMediaKit与EasyCVR构建的流媒体系统,具备多协议接入、高性能分发、灵活存储适配等优势,通过分级存储方案满足不同规模场景需求。系统架构清晰、部署可落地,能有效实现视频监控的集中管理、安全存储与高效应用,适用于安防、园区、交通等多行业场景。

8.2 扩展建议

- 智能分析扩展:对接AI智能分析网关,通过EasyCVR实现区域入侵、安全帽检测、烟火识别等功能,提升系统智能化水平;

- 云存储扩展:大型场景可引入对象存储(如阿里云OSS、华为云OBS),实现录像异地备份与弹性扩容;

- 多级级联扩展:通过EasyCVR树形级联架构,实现省、市、县多级监控网络互联,满足大规模联网管理需求;

- API集成扩展:利用EasyCVR提供的RESTful API,将流媒体服务与第三方业务系统(如安防平台、ERP系统)集成,实现业务联动。


我的app签名,你有吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|投诉举报|客服微信号:ppm0536|今潍网-潍坊论坛 ( 鲁ICP备14032312号 )

GMT+8, 2026-1-30 12:10 , Processed in 0.085591 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表