当前位置: 首页 > news >正文

WVP和ZLM部署与接入NVR指南环境准备

WVP(Web Video Platform)和ZLM(Zhongli Media Server)部署与接入NVR指南

环境准备

确保服务器满足以下条件:

  • 操作系统:Linux(推荐Ubuntu 20.04/22.04或CentOS 7/8)
  • 硬件:至少4核CPU、8GB内存、100GB存储(视频存储需额外空间)
  • 网络:开放HTTP/HTTPS端口(80/443)、RTMP(1935)、RTSP(554)等端口
  • 依赖:JDK 11+、MySQL 5.7+、Redis 5.0+、FFmpeg

安装基础依赖:

# Ubuntu/Debian示例
sudo apt update && sudo apt install -y openjdk-11-jdk mysql-server redis-server ffmpeg

部署ZLM(流媒体服务器)
  1. 下载ZLM最新版本(如ZLMediaKit):
git clone --depth 1 https://github.com/ZLMediaKit/ZLMediaKit.git
cd ZLMediaKit && git submodule update --init

  1. 编译安装:
mkdir build && cd build
cmake .. -DENABLE_WEBRTC=ON
make -j4 && sudo make install

  1. 启动ZLM:
cd /usr/local/bin
./MediaServer -d  # 后台运行

  1. 验证ZLM状态:
    访问 http://服务器IP:8080/index/api/getServerConfig 查看返回配置信息。
部署WVP(视频管理平台)
  1. 下载WVP-PRO源码:
git clone https://github.com/648540858/wvp-GB28181-pro.git
cd wvp-GB28181-pro

  1. 配置数据库:
    创建MySQL数据库并导入初始化脚本:
CREATE DATABASE wvp CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE wvp;
source ./doc/database.sql;

  1. 修改配置文件:
    编辑 application.yml
spring:datasource:url: jdbc:mysql://localhost:3306/wvp?useSSL=falseusername: rootpassword: your_passwordsip:ip: 服务器IPport: 5060

  1. 启动WVP:
mvn clean package -DskipTests
java -jar target/wvp-pro-*.jar

接入NVR设备
  1. 在WVP中添加设备:
    登录WVP管理界面(默认账号密码admin/123456),进入【设备管理】>【添加设备】。
    填写NVR的SIP信息(GB28181协议):
  • 设备ID:NVR的SIP编号(如34020000001320000001)
  • IP/域名:NVR的IP地址
  • 端口:NVR的SIP端口(默认5060)
  • 密码:NVR的SIP认证密码
  1. 配置视频流传输:
    在NVR管理界面中启用GB28181协议,填写WVP的SIP服务器信息(WVP的IP和端口)。

  2. 验证视频流:
    在WVP的【实时直播】页面选择对应通道,确认视频流正常播放。

防火墙与安全配置

开放必要端口:

sudo ufw allow 5060/tcp  # SIP
sudo ufw allow 5060/udp
sudo ufw allow 10000:20000/udp  # 媒体流端口范围

常见问题排查
  • ZLM未启动:检查/usr/local/bin/logs/error.log日志。
  • WVP连接NVR失败:确认NVR的SIP配置与WVP的SIP IP一致。
  • 无视频流:在ZLM控制台查看流ID是否生成,使用FFmpeg测试拉流:
    ffplay -i rtsp://ZLM服务器IP:554/streamid
    

通过以上步骤,即可完成WVP和ZLM的部署,并实现NVR视频的接入与管理。

http://www.dtcms.com/a/331702.html

相关文章:

  • 【React】hooks 中的闭包陷阱
  • 三轴云台之脉宽调制技术篇
  • Qt基本槽
  • 链游(GameFi)开发破局:如何平衡可玩性与经济模型可持续性?
  • GraphRAG:AI理解复杂知识的未知领域,开启探索之旅
  • 《Python函数:从入门到精通,一文掌握函数编程精髓》
  • MySQL主从原理
  • Linux 文件系统简介
  • 解析 TrueType/OpenType 格式的可变字体(Variable Font),提取其所有命名实例(Named Instances) 的名称信息
  • ESP32S3的LVGL配置参数解释、动画播放优化(更新中)
  • 4.1vue3的setup()
  • 《WebGL中FBO的底层运行逻辑》
  • 编程与数学 02-017 Python 面向对象编程 01课题、面向对象
  • 【会员专享数据】2000-2024年我国乡镇的逐日PM₁₀数据(Shp/Excel格式)
  • linux初始化配置
  • 计算机网络知识
  • 基于Java飞算AI的Spring Boot聊天室系统全流程实战
  • 【奔跑吧!Linux 内核(第二版)】第6章:简单的字符设备驱动(三)
  • CMake include_directories()使用指南
  • 从零开始的云计算生活——第四十三天,激流勇进,kubernetes模块之Pod资源对象
  • 莫队 Little Elephant and Array
  • GUI Grounding: ScreenSpot
  • 力扣-62.不同路径
  • AM原理与配置
  • 【网络安全测试】手机APP安全测试工具NowSecure 使用指导手册(有关必回)
  • Monsters
  • Redis7学习--持久化机制 RDB与AOF
  • 【SLAM】不同相机模型及其常见的链式求导推导
  • 从“静态文档”到“交互式模拟”:Adobe Captivate企业培训解决方案深度实践
  • OpenCV 高斯模糊降噪