i自由

  1. 首页
  2. 应用分享
  3. Linux应用
  4. 正文

Centos7 下部署 wvp-GB28181-pro+ZLMediaKit 流媒体服务器,实现监控摄像头推拉流播放与录像

2021年10月2日 1400点热度 1人点赞 0条评论

由于项目需要,为把视频监控摄像头视频流转换成h5支持的视频流格式,部署了wvp-GB28181-pro+ZLMediaKit 方案,经试用功能完全满足需要。安装过程中也踩了一些坑,特将过程记录下来。

本文主要采用 wvp-GB28181-pro+ZLMediaKit实现通过 视频拉流和GB28181 协议进行海康、大华、宇视等品牌的 IPC、NVR 、DVR 接入,完成摄像头监控无插件播放,控制,录制。安装完成后的运行界面如下:

一、准备工作

1、准备CentOS服务器一台。

2、sip服务wvp:https://github.com/648540858/wvp-GB28181-pro(国内镜像:https://gitee.com/pan648540858/wvp-GB28181-pro)

3、流媒体服务ZLMediaKit:https://github.com/ZLMediaKit/ZLMediaKit(国内镜像:https://gitee.com/xia-chu/ZLMediaKit)

以上两个服务都有安装文档,本文参考相关文档,结合安装时踩的坑,作了相应调整,整理而成,如有不理解,可结合它们的文档一起看。

4、ffmpeg:http://www.ffmpeg.org/releases/ffmpeg-4.4.tar.gz

5、安装 git,建议先运行 su 切换超级用户(也可不切换,安装时加上 sudo ,下同)。

su

yum -y install git

二、编译运行 ZLMediaKit

安装 gcc 和 gcc-c++

yum -y install gcc gcc-c++
gcc -v

安装 openssl 和 SDL

yum -y install openssl-devel SDL-devel

安装 cmake,因为编译 ffmpeg 需要 cmake 版本 3.1.3 以上,而我测试的服务器上使用yum安装的版本较低,所以从官网下载最新版编译安装(安装时间较长)。

wget https://cmake.org/files/v3.21/cmake-3.21.3.tar.gz  //如果提示证书过期,可加参数 --no-check-certificate
tar -zxvf cmake-3.21.3.tar.gz
cd cmake-3.21.3/
./bootstrap       //此步可能遇到问题,见下文
gmake             //此步需要很长时间
gmake install

安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install

安装 ffmpeg

(1)下载解压

wget http://www.ffmpeg.org/releases/ffmpeg-4.4.tar.gz
tar -zxvf ffmpeg-4.4.tar.gz

(2) 进入解压后目录,输入如下命令/usr/local/ffmpeg为自己指定的安装目录

cd ffmpeg-4.4
./configure --prefix=/usr/local/ffmpeg
make && make install

(3)配置变量
vi /etc/profile
在最后PATH添加环境变量:
export PATH=$PATH:/usr/local/ffmpeg/bin
保存退出
查看是否生效
source /etc/profile 或者 . /etc/profile 设置生效
(4)查看版本
ffmpeg -version 查看版本

编译安装 ZLMediaKit

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

进入 release/linux/Debug 目录运行 ZLMediaKit

cd ../release/linux/Debug

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

配置文件在Debug目录下的config.ini,可以在[http]下port选项修改端口。

三、安装mysql

最新的wvp仅支持mysql,本文以安装mysql 5.7为例

1、安装YUM Repo

由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。
下载命令:

wget https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

然后进行repo的安装:
rpm -ivh mysql57-community-release-el7-10.noarch.rpm

2、导入最新GPG密钥,防止出现不适用软件包问题。

npm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

3、使用yum命令安装mysql并启动

yum -y install mysql-server

启动

systemctl start mysqld

加入自启动

systemctl enable mysqld

获取安装时的临时密码(在第一次登录时就是用这个密码):
grep 'temporary password' /var/log/mysqld.log

复制上图中的临时密码

4、登录并修改密码

输入以下命令并粘贴临时密码

mysql -u root -p

设置密码强度等级为低:

set global validate_password_policy=LOW;

设置密码最低位数:

set global validate_password_length=6;

修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

5、如果要远程配置,可以开启远程控制:

use mysql;

update user set Host='%' where User='root';

说明: % 代表任意的客户端,可替换成具体IP地址。最后刷新一下:

flush privileges;

四、编译运行 wvp-GB28181-pro

1、安装 Redis

#下载fedora的epel仓库
yum -y install epel-release
#安装redis数据库
yum -y install redis
#启动redis服务
systemctl start redis
#查看redis状态
systemctl status redis
#将redis设置为自动启动
systemctl enable redis

2、安装依赖环境(之前已具备 git 和 npm 包)

yum -y install java-11-openjdk maven
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
yum -y install nodejs

3、同步代码,编译静态页面(此步骤耗时较长)

git clone https://gitee.com/pan648540858/wvp-GB28181-pro
cd wvp-GB28181-pro/web_src
npm --registry=https://registry.npm.taobao.org install
npm run build

编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在src/main/resources下出现static目录

4、打包项目, 生成可执行jar

cd wvp-GB28181-pro

mvn package

编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在target目录下出现wvp-pro-2.0.2-03010836.jar(更新后生成的文件名会不同,以下命令中替换成最新jar包名即可)。

5、修改配置文件

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

根据 ZLMediaKit 配置修改一下 application.yml 配置文件才能正常运行。redis如果没有修改密码或端口,此处无需要更改。系统自带sqlite数据库,如果需要连接mysql则更改相应配置即可。

spring:
# REDIS数据库配置
redis:
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 127.0.0.1
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
database: 6
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
password:
# [可选] 超时时间
timeout: 10000
# jdbc数据库配置
datasource:
# 使用mysql 打开23-28行注释, 删除29-36行
name: wvp
url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true
username:
password:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver

# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18080

# 作为28181服务器的配置
sip:
# [必须修改] 本机的IP
ip: 192.168.0.100
# [可选] 28181服务监听的端口
port: 5060
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
# 后两位为行业编码,定义参照附录D.3
# 3701020049标识山东济南历下区 信息行业接入
# [可选]
domain: 4401020049
# [可选]
id: 44010200492000000001
# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
password: admin123

#zlm 默认服务器配置
media:
# [必须修改] zlm服务器的内网IP
ip: 127.0.0.1
# [必须修改] zlm服务器的http.port
http-port: 80
# [可选] zlm服务器的hook.admin_params=secret
secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输,
port-range: 30000,30500 # 端口范围
# [可选] 国标级联在此范围内选择端口发送媒体流,
send-port-range: 30000,30500 # 端口范围
# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
record-assist-port: 0

# [可选] 日志配置, 一般不需要改
logging:
file:
name: logs/wvp.log
max-history: 30
max-size: 10MB
total-size-cap: 300MB
level:
com.genersoft.iot: debug
com.genersoft.iot.vmp.storager.dao: info
com.genersoft.iot.vmp.gb28181: info

# [根据业务需求配置]
user-settings:
# 推流直播是否录制
record-push-live: true

# 在线文档: swagger-ui(生产环境建议关闭)
swagger-ui:
enabled: true

# 版本信息, 不需修改
version:
version: "@project.version@"
description: "@project.description@"
artifact-id: "@project.artifactId@"

注意根据实际修改加粗部分内容

6、导入mysql数据库

mysql -u root -p
输入密码
use 要导入的数据库名(没有就新建一个,使用create database test;命令新建,再use test;,再set names utf8;设置一下编码)
source /home/test.sql; (选择要导入的数据库备份文件,进行导入就可以了)

7、运行wvp

cd target
java -jar wvp-pro-2.0.2-03010836.jar --spring.config.location=application.yml
安装完成即可访问,地址 http://服务器ip:18080,初始用户名和密码:admin

五、防火墙开放相关接口

开放 ZLMediaKit 端口

http(hls) 80/https 443 /rtsp 554 /rtsps 332 /rtmp 1935 /rtmps 19350 /9000 /10000 /10000(udp) /媒体流端口30000-30500 /媒体流端口30000-30500(udp)

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --zone=public --add-port=443/tcp --permanent

firewall-cmd --zone=public --add-port=554/tcp --permanent

firewall-cmd --zone=public --add-port=332/tcp --permanent

firewall-cmd --zone=public --add-port=1935/tcp --permanent

firewall-cmd --zone=public --add-port=19350/tcp --permanent

firewall-cmd --zone=public --add-port=9000/tcp --permanent

firewall-cmd --zone=public --add-port=10000/tcp --permanent

firewall-cmd --zone=public --add-port=10000/udp --permanent

firewall-cmd --zone=public --add-port=30000-30500/tcp --permanent

firewall-cmd --zone=public --add-port=30000-30500/udp --permanent

开放 wvp 端口

http 18080 /GB28181接收推流 5060 /GB28181接收推流 5060(udp)

firewall-cmd --zone=public --add-port=18080/tcp --permanent

firewall-cmd --zone=public --add-port=5060/tcp --permanent

firewall-cmd --zone=public --add-port=5060/udp --permanent

生效防火墙配置

firewall-cmd --reload

至此,wvp-GB28181-pro + ZLMediaKit 方案就部署好了,在使用时发现播放视频流失败,只要进入“节点管理→编辑”将媒体节点相应IP修改为实际地址即可。

标签: 暂无
最后更新:2022年3月3日

随波

这个人很懒,什么都没留下

打赏 点赞

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2020 i自由. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

登录
注册|忘记密码?