一、前言

小白在安装wvp-pro时会遇到很多问题,主要是其中的配置文件的修改会存在一定的困难。在本篇文章中,在Ubuntu系统下进行部署。

二、wvp介绍

1.平台介绍

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 进行修改.

2.参考文档

wvp使用文档 https://doc.wvp-pro.cn
ZLM使用文档 https://github.com/ZLMediaKit/ZLMediaKit

三、VMware虚拟机中安装Ubuntu

1.下载

点击以下的两个超链接进行下载:
vmware下载链接
Ubuntu镜像加载链接
vm直接进行安装即可。

2.vmware中部署Ubuntu

在这里插入图片描述
在这里插入图片描述
稍后再进行安装操作系统
在这里插入图片描述操作系统选择Linux系统,版本选择Ubuntu64位
在这里插入图片描述可以自己定义虚拟机的名称和存放的位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击下一步直到对磁盘大小进行设置,将与你磁盘存储为单个文件
在这里插入图片描述完成虚拟机的创建在这里插入图片描述
接下来进行操作系统的安装:
编辑虚拟机的设置
在这里插入图片描述对cd/dvd进行配置,选择使用ISO映像文件,将已经下载好的Ubuntu映像进行导入即可。
在这里插入图片描述
接下来即可启动虚拟机,然后进行系统的安装。

四、初始环境搭建

1.安装依赖

安装maven,nodejs,npm

apt-get install -y openjdk-11-jre git maven nodejs npm

2.安装redis数据库

Redis下载部署配置运行及修改登录地址、端口和密码
apt安装命令

sudo apt update

启动redis

redis-server

查看redis是否启动成功

redis-cli

127.0.0.1是本机IP,也是redis默认的IP地址,6379是redis默认的服务端口。检查redis是否可以ping通,如果输出PONG,则说明启动成功。请添加图片描述

3.安装MySQL,并创建wvp数据库

安装MySQL

sudo apt-get update #获取最新的软件源
sudo apt-get install mysql-server #安装mysql

  • 配置MySQL

先对MySQL设置密码:

sudo mysql
#下面的命令在MySQL中执行,不要忘记
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘your_password’;

这里’your_password’为你自己设置的密码,由于wvp配置文件中要根据自己的mysql设置来更改,所以这里为了方便直接采用wvp配置文件中的默认密码。

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY
‘123456’;

开始配置:

sudo mysql_secure_installation

# 1.询问是否安装密码插件,我选择 No
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: n

# 2.为root用户设置密码
Please set the password for root here.

New password: 

Re-enter new password: 

#3.删除匿名用户,我选No
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : n

 ... skipping.

#4.禁止root管理员从远程登录,这里我选 No
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
 
 #5.删除test数据库并取消对它的访问权限, 我选 No
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n

 ... skipping.
 
 #6.刷新授权表,让初始化后的设定立即生效, 选 Yes
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

在MySql中创建一个名字为wvp的数据库,并在wvp数据库中执行wvp-GB28181-pro/sql/下的mysql.sql脚本创建表结构
连接mysql数据库,输入密码:

mysql -u root -p

新建一个名字为wvp的数据库:

mysql>CREATE DATABASE wvp;

这里可以用以下命令查看数据库:

mysql>show databases;

使用这个数据库:

mysql>use wvp;

执行数据库脚本

mysql>source /home/hust_zhang/wvp-GB28181-pro/sql/mysql.sql
mysql>source /home/hust_zhang/wvp-GB28181-pro/sql/update.sql

这里执行update脚本会有报错,但似乎对后续使用没什么影响,可能数据库脚本没有同时更新。
另外似乎也可以用flush privileges;刷新授权,来替代运行update脚本。(这里没有实验过,如果wvp启动报错的话还是继续执行update脚本)
可以使用下面的命令查看当前数据库里面的表

mysql>show tables;

4.编译ZLMediaKit

  • 获取代码

    务必使用git克隆ZLMediaKit的代码,因为ZLMediaKit依赖于第三方代码,zip包不会下载第三方依赖源码,你可以这样操作:

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
  • 编译器gcc
sudo apt-get install build-essential
  • cmake
    ZLMediaKit采用cmake来构建项目,通过cmake才能生成Makefile(或Xcode/VS工程),所以必须先安装cmake才能完成后续步骤
sudo apt-get install cmake
  • 依赖库
    ZLMediaKit可选依赖一些第三方库,这些库都不是必选的;在构建ZLMediaKit时,cmake能查找系统路径中的这些库,并根据安装情况选择是否开启相关特性,你可以选择安装这些依赖并启用相关特性:

⭕openssl
flash player在播放rtmp时,采用的是复杂握手模式,如果不安装该库,flash player将播放不了zlmediakit 提供的rtmp url.
同时ZLMediaKit的https/rtsps/webrtc相关功能需要使用openssl才能开启。

⭕ffmpeg
zlmediakit可以通过fork ffmpeg进程的方式实现多种协议的拉流,编译时不需要安装FFmpeg

⭕sdl、avcodec、avutil

这3个库供ZLMediaKit的test_player测试程序使用,你通常不需要安装这3个库。

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
  • 构建和编译项目

由于开启webrtc相关功能比较复杂,默认是不开启编译的,可以参考下面的文档进行学习。
zlm启用webrtc编译指南

具体操作
	cd ZLMediaKit
	mkdir build
	cd build
	cmake ..
	make -j4
  • 运行(如果要运行wvp整个项目,这步可以先不执行)
    ZLMediaKit工程主要生成3种二进制目标文件,他们的生成的路径在release目录下,这些目标文件主要分为:
    MediaServer进程
    这是ZLMediaKit作为服务器的主进程,该进程可以在免去开发的情况下直接作为测试流媒体服务器使用,如果你需要更复杂的业务逻辑,可以通过Web HOOK和RESTful API实现,同时你可以通过配置文件控制其参数。
    在linux下启动:
	 cd ZLMediaKit/release/linux/Debug
	#通过-h可以了解启动参数
	./MediaServer -h
	#以守护进程模式启动
	./MediaServer -d &

5.编译wvp-pro

可以参考WVP使用文档
这里建议从github上下载,gitee上维护似乎不是很同步

  • 可以通过git克隆,也可以在项目下载点击下载ZIP

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

  • 编译前端界面
cd wvp-GB28181-pro/web_src/
npm --registry=https://registry.npm.taobao.org install
npm run build

编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在src/main/resources下出现static目录 编译完成一般是这个样子,中间没有报红的错误信息。引用了一个运行成功的效果图在这里插入图片描述

  • 打包项目, 生成可执行jar
cd wvp-GB28181-pro
mvn package
编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在target目录下出现wvp-pro-***.jar文件即可

注意zlm和wvp两个文件的下载目录,方便切换

cd … //返回上一级文件夹

五、整个wvp项目的配置运行

1.对ZLM和WVP的配置文件进行修改来实现配置

##ZLMediaKit服务目录
cd ZLMediaKit/release/linux/Debug

打开ZLM文件中的config.ini配置文件,记录下http port和mediaServerId,这里原本的mediaServerId=your_server_id,将其修改为自己的id即可,可以随意命名,但是需要和后面wvp配置文件中的media中的id保持一致。这里采用的的是wvp配置文件application.yml中默认的id。http port也可以自定义更改。同理,conf文件和application文件中要保持一致。

以下两张图片为config.ini文件的修改情况:
请添加图片描述请添加图片描述
在进行修改config.ini文件时,会出现没有权限的情况,这就需要我们把文件的权限打开,设置为可编辑状态。

cd ZLMediaKit/conf //切换到conf文件夹下
chmod 777 config.ini //进行权限的修改

然后就可以进行对配置文件的修改。

  • wvp配置
    这里截取了wvp文档中的部分,可保证基础运行,想要其他功能或者想要修改的请仔细阅读文档。

WVP配置文件位置

基于spring boot的开发方式,配置文件的加载是很灵活的。默认在src/main/resources/application.yml,部分配置项是可选,你不需要全部配置在配置文件中, 完全的配置说明可以参看all-application.yml。

默认加载配置文件方式

使用maven打包后的jar包里,已经存在了配置文件,但是每次打开jar包修改配置文件或者修改后再打包都是比较麻烦的,所以大家可通过指定配置文件路径来加载指定位置的配置文件。

cd wvp-GB28181-pro/target
java -jar wvp-pro-*.jar --spring.config.location=../src/main/resources/application.yml

迁移配置文件以方便启动
由于配置文件的命令比较长,所以为了启动方便通常会把配置文件放到jar包的同级目录,类似这样, 移除jar包内/BOOT-INF/classes/下所有以application开头的文件,使用解压缩工具打开jar即可,不需要解压出来。

cd wvp-GB28181-pro/target
mv ../src/main/resources/application-dev.yml application.yml 
java -jar wvp-pro-*.jar 

建议使用这种方式进行启动。

这时候如果按照上述方式启动,会报错,因为还没有修改wvp中的配置文件application.yml。

  • application.yml配置文件的修改

首先修改MySQL数据库中使用的数据库,即刚刚创建的wvp数据库,修改root密码
请添加图片描述

##参考代码
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?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
    username: root
    password: 123456

接下来修改sip的配置

ip地址为自己虚拟机的ip地址,如果你的笔记本经常发生ip地址的变化,在每次使用时都需要修改ip

Ubuntu下查看本机的ip地址:

ip addr

可能会出现端口占用的情况,依据自己虚拟机的情况来进行端口的修改
查看Ubuntu中已经使用的端口号

netstat -apt

请添加图片描述

# 作为28181服务器的配置
sip:
  # [必须修改] 本机的IP,对应你的网卡,监听什么ip就是使用什么网卡,
  # 如果要监听多张网卡,可以使用逗号分隔多个IP, 例如: 192.168.1.4,10.0.0.4
  # 如果不明白,就使用0.0.0.0,大部分情况都是可以的
  # 请不要使用127.0.0.1,任何包括localhost在内的域名都是不可以的。
  ip: 192.168.10.110
  # [可选] 28181服务监听的端口
  port: 5065
  # 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
  # 后两位为行业编码,定义参照附录D.3
  # 3701020049标识山东济南历下区 信息行业接入
  # [可选]
  domain: 3402000000
  # [可选]
  id: 34020000002000000001
  # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
  password: 12345678
  # 是否存储alarm信息
  alarm: true

最后配置ZLMediaKit连接信息
请添加图片描述
id必须与之前config.ini中的名称一致
ip修改为本虚拟机的IP地址
http的端口号同样与之前config.ini中的端口号一致

根据自己的喜好和虚拟机端口的使用情况设置http的端口号,这个端口号即为在浏览器中打开时的端口号请添加图片描述

请添加图片描述

2.运行

#启动ZLM
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
#如果说没有权限,请加上sudo
sudo ./MediaServer
sudo ./MediaServer -d -m 3 &

#启动WVP
cd wvp-GB28181-pro/target
java -jar wvp-pro-*.jar

在成功运行之后,打开浏览器输入虚拟机ip+wvp监听的http端口例如:192.168.1.3:18080)即可看到登录界面。
用户名:admin 密码:admin

请添加图片描述
请添加图片描述
六、参考链接
(20条消息) Ubuntu 安装和使用MySQL
wvp-GB28181-pro 编译部署ubuntu系统【详细教程】
ZLMediaKit Wiki
wvp文档doc.wvp-pro.cn
wvp-GB28181-pro链接github
ZLMediaKit链接github

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐