WVP PRO配置实战

在这里插入图片描述

WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将不带国标功能的摄像机/直播流/直播推流转发到其他国标平台。

流媒体服务基于@夏楚 ZLMediaKit https://github.com/ZLMediaKit/ZLMediaKit
播放器使用@dexter jessibuca https://github.com/langhuihui/jessibuca/tree/v3
前端页面基于@Kyle MediaServerUI https://gitee.com/kkkkk5G/MediaServerUI 进行修改.

应用场景

支持浏览器无插件播放摄像头视频。 支持国标设备(摄像机、平台、NVR等)设备接入 支持非国标(onvif, rtsp, rtmp,直播设备等等)设备接入,充分利旧。 支持国标级联。多平台级联。跨网视频预览。 支持跨网网闸平台互联。

官方文档

官方文档写的很清楚。本文也是基于官方文档实现的。

docker(伪虚拟机)

本次部署与安装准备在docker容器中配置。为什么要在docker中配置呢?在这里我主要是把docker当作虚拟机使用。这样配置好了以后方便移植和部署。而在Linux中运行的话,docker的性能要比虚拟机强多了。

不用docker的可以直接跳过此节,往后看基本就是普通的 ubuntu Linux操作。

docker安装

docker的安装,不是本文的重点。请参考docker的官方文档:
https://docs.docker.com/engine/install/

比如:ubuntu的安装我参考的是:
https://docs.docker.com/engine/install/ubuntu/

创建容器

docker的基本使用,可以参考:
《Docker使用笔记》
https://blog.csdn.net/lxyoucan/article/details/121572097

下载镜像

这里我选用的是ubuntu系统,理论上其他发行版本也一样。

docker pull ubuntu

创建一个CONTAINER

执行下面命令:

docker run --name wvp -it ubuntu bash

这样我们就创建一个名为wvp的容器,并且直接执行bash。
这里说一下可能用到的操作

退出与进入CONTAINER
  • 快捷键ctrl -p ctrl-q 退出并让CONTAINER后台运行
  • 命令exit退出,会直接让CONTAINER关机

进入CONTAINER
docker attach $NAMES
docker attach $CONTAINER ID

比如我们这里应该输入:

docker attach wvp

可以查询系统的版本。

cat /etc/*-release

我这里是Ubuntu 22.04.2 LTS

简单配置实用工具

创建一个容器,就相当与刚安装了一个系统。我们先做简单的配置,和实用工具的安装。此节非必须。看个人喜好。

unminimize

因为docker中的ubuntu是精简版本的,就是恢复正常模式.
此步可能不是必须的,但是执行完这一步以后,这个容器会更接近一个真实的ubuntu.缺点就是会让这个容器体积会更大一些。

设置国内源

国内源很多,找个自己喜欢的就行了。
设置方法见:https://blog.csdn.net/lxyoucan/article/details/121691910

安装常用软件

下面这些软件是本人使用linux必备软件,仅供参考。

apt-get update
# 安装文本编辑器
apt install vim
# 安装zsh ,本人比较喜爱zsh替换bash
apt install zsh
# 网络工具
apt install curl wget
apt install unzip ranger

准备工作

我这里是Ubuntu 22.04.2 LTS,操作步骤基本参考官方手册。
https://doc.wvp-pro.cn/#/_content/introduction/compile

安装依赖

依赖版本用途开发环境需要生产环境需要
jdk>=1.8运行与编译java代码
maven>=3.3管理java代码依赖
git下载/更新/提交代码
nodejs编译于运行前端文件
npm管理前端文件依赖
apt-get install -y openjdk-11-jre git maven nodejs npm

安装mysql

这里说一下,我尝试安装mysql,但是在容器中没有安装成功。我也就没有花额外时间折腾了。
我用mariadb代替了,反正兼容mysql。
官方教程地址:

https://mariadb.org/download/?t=repo-config&d=22.04+%22jammy%22&v=10.11&r_m=aliyun

我把关键部分截取下来。
以下是在 Ubuntu 系统上导入 MariaDB 存储库密钥时要运行的命令:

sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'

编辑/etc/apt/sources.list.d/mariadb.sources,内容如下:

# MariaDB 10.11 repository list - created 2023-06-19 10:07 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# URIs: https://deb.mariadb.org/10.11/ubuntu
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/ubuntu
Suites: jammy
Components: main main/debug
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp

您现在可以通过以下方式从 MariaDB 存储库安装 MariaDB 10.11:

sudo apt-get update
sudo apt-get install mariadb-server

手动启动mysql(MariaDB)

mysqld_safe  --user=mysql &

启动成功,后测试如下:
在这里插入图片描述

安装redis

apt install redis

因为我们是在docker容器中搞的,所以systemctl start redis是无法成功启动的。

手动启动redis服务

/usr/bin/redis-server /etc/redis/redis.conf

编译ZLMediaKit

参考ZLMediaKitWIKI,截取一下关键步骤:

# 国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init

ubuntu一般自带的gcc版本够新,你可以这样安装gcc编译器:

sudo apt-get install build-essential

ZLMediaKit采用cmake来构建项目,通过cmake才能生成Makefile(或Xcode/VS工程),所以必须先安装cmake才能完成后续步骤。

如果你是debian系操作系统(包括ubuntu系用户),一般自带的cmake版本够新,你可以这样安装cmake

sudo apt-get install cmake

Debian系(包括ubuntu)系统下安装依赖的方法:

除了openssl,其他其实都可以不安装

sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg

编译:

cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j4

在linux下启动:

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &

编译WVP-PRO

上面忙活了半天,终于到了正文。

从gitee克隆

git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git

从github克隆

git clone https://github.com/648540858/wvp-GB28181-pro.git

这里我是从github中克隆的。

编译前端页面

cd wvp-GB28181-pro/web_src/
npm --registry=https://registry.npmmirror.com install
npm run build

编译如果报错, 一般都是网络问题, 导致的依赖包下载失败。
实在不行,用自己可以编译成功的电脑,编译一下。
在这里插入图片描述

我这里的docker中npm install没有成功,不想浪费时间。我是在mac中编译完copy过来的。

PS: 可以这样使用taobao的源 npx nrm use taobao

生成可执行jar

cd wvp-GB28181-pro
mvn package

数据库初始化

配置WVP-PRO
wvp支持多种数据库,包括Mysql,Postgresql,金仓等,配置任选一种即可。

初始化数据库

首先使用创建数据库,然后使用sql/初始化.sql初始化数据库,如果是从旧版升级上来的,使用升级sql更新。

Mysql数据库配置
数据库名称以wvp为例,
yml的配置文件如下:

 spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
    username: root
    password: 12345678

mybatis:
  configuration:
    map-underscore-to-camel-case: true

这个我们稍后有用。这边供大家看,后续要放进配置文件中。

设置root密码

这里我们就以设置成12345678为例吧。
命令行中输入mysql,进入mysql的命令行。
然后执行以下命令:

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';

在这里插入图片描述
因为我们设置了密码,下次进入mysql命令行就要带上密码了

mysql -uroot -p12345678

创建数据库

首先进入mysql的命令行:

mysql -uroot -p12345678

然后输入以下命令创建用户。

CREATE DATABASE `wvp` CHARACTER SET UTF8;
use wvp;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
source /root/wvp-GB28181-pro/sql/初始化.sql;

在这里插入图片描述
脚本会创建如下的表结构。

MySQL [wvp]> show tables;
+----------------------------+
| Tables_in_wvp              |
+----------------------------+
| wvp_device                 |
| wvp_device_alarm           |
| wvp_device_channel         |
| wvp_device_mobile_position |
| wvp_gb_stream              |
| wvp_log                    |
| wvp_media_server           |
| wvp_platform               |
| wvp_platform_catalog       |
| wvp_platform_gb_channel    |
| wvp_platform_gb_stream     |
| wvp_stream_proxy           |
| wvp_stream_push            |
| wvp_user                   |
| wvp_user_role              |
+----------------------------+
15 rows in set (0.002 sec)

修改yml配置文件

我们直接复制wvp-GB28181-pro/src/main/resources/application-dev.yml
wvp-GB28181-pro/src/main/resources/application-local.yml
命令如下:

cd ~/wvp-GB28181-pro/src/main/resources
cp application-dev.yml application-local.yml

然后我们编辑application-local.yml就可以了。
我这里编辑了如下内容:

mysql数据源

url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
    username: root
    password: 12345678

redis
因为我们没有设置密码,直接把这行用#注释。

#password: face2020

修改完配置文件,我们可以用以下命令运行一下项目,看看是否有报错。

cd /root/wvp-GB28181-pro
mvn spring-boot:run

其他的地方基本就按作者的默认配置来了。

ZLMediaKit配置

cd ZLMediaKit/release/linux/Debug
vim config.ini

这里修改的主要是与上面yml对应的内容:

http端口

在[http]配置中把
port=8091

mediaServerId

[general]

mediaServerId=FQ3TF8yT83wh5Wvz

启动服务

cd ZLMediaKit/release/linux/Debug
#以守护进程模式启动
./MediaServer -d &

运行

上面都配置完了,运行也都提到过了。单独提出来在说一下遍。因为配置通常只有一次。配置完就结束了。而运行要经常做的。

手动启动mysql(MariaDB)

mysqld_safe  --user=mysql &

手动启动redis服务

/usr/bin/redis-server /etc/redis/redis.conf

启动ZLMediaKit

cd ZLMediaKit/release/linux/Debug
./MediaServer -d &

启动WVP

启动方法有很多,我这种是直接启动。不打成jar包。

cd /root/wvp-GB28181-pro
mvn spring-boot:run

优点:方便修改配置。
缺点:启动略慢一些。理论上不影响性能。
喜欢其他方式可以参考官方的文档:
https://doc.wvp-pro.cn/#/_content/introduction/config
jar包可以这样启动:

java -jar wvp-pro-*.jar 

以上都完成了,而且没有报错的话。可以通过浏览器访问IP:18080来访问了。

遗留问题

不清楚为什么docker容器重启后,redis连接总是会有问题的。
可以使用redis-cli执行以下命令。解决这个问题d。

FLUSHDB ASYNC

我的配置分享

https://download.csdn.net/download/lxyoucan/87933896

总结

这个项目的部署,难度不大。但是有点麻烦。关键是官方的文档写的不全面,有些地方一笔带过。对不会java的同学们会有一些难度。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值