网络:
同网段互通无网络上问题
系统:
Centos7.9
摄像头:
支持rtsp或者rtmp推流且支持国标28181
1、下载MySQL官方包
## 下载MySQL
[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
2、解压并移动安装包
# 解压 tar -zxvf 待解压目录
[root@localhost ~]# tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
# 移动 mv 移动目录 移动后的目录
[root@localhost ~]# mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql
3、创建数据目录以及日志存放目录
# 进入MySQL目录
[root@localhost ~]# cd /usr/local/mysql
# 创建data文件夹(也可以根据那个磁盘大而定__df -Th查看)
[root@localhost mysql]# mkdir data
4、创建mysql用户并修改mysql目录组以及权限
# 创建msyql组
[root@localhost mysql]# groupadd mysql
# 创建mysql用户并添加到mysql组中,-r表示mysql是系统级用户,-g是所属组为mysql
[root@localhost mysql]# useradd -r -g mysql mysql
# 修改mysql目录的组以及权限
[root@localhost mysql]# chown mysql:mysql -R ./
5、修改MySQL配置文件
[root@localhost mysql]# vi /etc/my.cnf
[mysqld]
bind-address = 192.168.1.31
port = 3306
user = mysql
# mysql解压目录
basedir = /usr/local/mysql
# 数据存放目录
datadir = /usr/local/mysql/data
# 跳过密码验证
# skip-grant-tables
# socker文件存放目录
socket = /tmp/mysql.sock
# 错误日志
log-error = /usr/local/mysql/data/mysql.error
# mysql进程号
pid-file = /usr/local/mysql/data/mysql.pid
# 日志记录慢查询SQL
slow_query_log = true
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
long_query_time = 1
#记录没有使用index的查询记录
log-queries-not-using-indexes
# 配置mysqlbinlog
server-id = 1
log-bin = mysql-bin
binlog_format = MIXED
# 设置binlog过期时间,过期自动删除
expire-logs-days = 30
max_binlog_size = 128M
log_bin_trust_function_creators = 1
sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
6、初始化MySQL
# 初始化 --defaults-file为配置文件所在 ,--basedir为解压路径,--datadir为数据保存路径 --user表示MySQL所属用户
[root@localhost mysql]# ./bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql --initialize
## 如果执行完初始化没有报错,复制MySQL启动脚本到/etc/init.d/目录便于使用service mysql start启动
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql
7、查看密码
## 初始化MySQL是会生产一个临时密码,可以通过查看在my.cnf中配置的log-error的配置文件知晓。Hf=mN0fPujio
[root@localhost mysql]# cat data/mysql.error
root@localhost: !Te<#JGaS8Ot ##通常最后一行
8、设置systemd启动文件
[root@localhost mysql]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld()
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PIDFile=/usr/local/mysql/data/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid
#注意这里要加上 --daemonize
# Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE =
Restart=on-failure
RestartPreventExitStatus=
PrivateTmp=false
9、启动MySQL
## 启动
[root@localhost mysql]# systemctl start mysql.service
## 重启
[root@localhost mysql]# systemctl restart mysql.service
## 停止
[root@localhost mysql]# systemctl stop mysql.service
## 开机自启动
[root@localhost mysql]# systemctl enable mysql.service
10、设置环境变量方便使用命令
[root@localhost mysql]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin ## 最后一行添加
[root@localhost mysql]# source /etc/profile
11、登入MySQL并且修改密码
## 登入MySQL
[root@localhost mysql]# mysql -uroot -p
Enter password: ## mysql.error获取的临时密码
## 修改密码
mysql> SET PASSWORD = PASSWORD('123456');
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> FLUSH PRIVILEGES;
## 设置MySQL远程登入
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
12、关闭防火墙或者开放端口
[root@localhost mysql]# systemctl stop firewalld //关闭防火墙
[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent //开放端口
[root@localhost mysql]# firewall-cmd --reload //开放端口后 需要更新一下
## 下载epel仓库
[root@localhost ~]# yum install epel-release -y
## 下载redis数据库
[root@localhost ~]# yum install redis -y
## 启动redis和设置开启自启动
[root@localhost ~]# systemctl start redis
[root@localhost ~]# systemctl enable redis
## 设置redis 远程连接和密码 (如果都在同一台机器上 不用这一步)
[root@localhost ~]# vim /etc/redis.conf
注释 #bind 127.0.0.1
修改 protected-mode no
修改 daemonize yes
修改 requirepass 123456
## 修改配置文件重启redis
[root@localhost ~]# systemctl restart redis
关闭防火墙或者开放端口
[root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent //开放端口
[root@localhost ~]# firewall-cmd --reload //开放端口后 需要更新一下
## 准备环境
[root@localhost ~]# yum install -y epel-release
## gcc和yasm需要高版本,目前环境是gcc4.8.5 yasm1.2.0
[root@localhost ~]# yum -y install yasm gcc* git openssl-devel SDL-devel
## 编译安装cmake 3.8.2
[root@localhost ~]# wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz
[root@localhost ~]# tar zxvf cmake-3.8.2.tar.gz
[root@localhost ~]# cd cmake-3.8.2
[root@localhost cmake-3.8.2]# ./bootstrap && gmake -j4 && gmake install
## 国内库比较快
[root@localhost cmake-3.8.2]# cd /usr/local/
[root@localhost local]# git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
[root@localhost local]# cd ZLMediaKit
[root@localhost ZLMediaKit]# git submodule update --init
## 编译安装
[root@localhost ZLMediaKit]# mkdir build && cmake . && make -j4
## ZLMediaKit服务目录
[root@localhost ZLMediaKit]# cd release/linux/Debug
配置文件
[root@localhost Debug]# vim config.ini
[general]
mediaServerId=ZLM_31 ## 修改ID号和wvp对接
## 软连接
[root@localhost Debug]# ln -s /usr/local/ZLMediaKit/release/linux/Debug/MediaServer /usr/bin/
创建system启动文件
[root@localhost Debug]# vim /usr/lib/systemd/system/ZLMediaKit.service
[Unit]
Description=MediaServer
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/bin/MediaServer -d
ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
RestartSec=10
Restart=always
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
## 启动ZLM
[root@localhost Debug]# systemctl daemon-reload
[root@localhost Debug]# systemctl start ZLMediaKit.service
[root@localhost Debug]# systemctl enable ZLMediaKit.service
## 前台启动
[root@localhost Debug]# ./MediaServer ## 前台启动
关闭防火墙或者开放相关端口
[root@localhost Debug]# systemctl stop firewalld //关闭防火墙
## 根据配置文件而定且按需求开放
[root@localhost Debug]# firewall-cmd --zone=public --add-port=80/tcp --permanent ##http.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=443/tcp --permanent ##https.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=554/tcp --permanent ##rtsp.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=554/udp --permanent ##rtsp.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=1935/tcp --permanent ##rtmp.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=10000/tcp --permanent ##rtp_proxy.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=10000/udp --permanent ##rtp_proxy.port
[root@localhost Debug]# firewall-cmd --zone=public --add-port=30000-30500/udp --permanent ##rtp.port-range
[root@localhost Debug]# firewall-cmd --zone=public --add-port=30000-30500/tcp --permanent ##rtp.port-range
[root@localhost ~]# firewall-cmd --reload //开放端口后 需要更新一下
JDK
## jdk提取码
链接:https://pan.baidu.com/s/1pSRGdb_A6U7HA7Bb0vT11w
提取码:jiol
## 安装jdk
[root@localhost ~]# tar zxvf jdk-8u121-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_121/ /usr/local/jdk
[root@localhost ~]# vim /etc/profile
##末尾添加
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Maven
[root@localhost ~]# wget https://archive.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
[root@localhost ~]# tar zxvf apache-maven-3.5.0-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.5.0 /usr/local/maven
[root@localhost ~]# vim /etc/profile
##末尾添加
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/maven
编译WVP-PRO
## 安装依赖
[root@localhost ~]# yum -y install nodejs npm
## 下载源码
[root@localhost ~]# cd /usr/local
[root@localhost local]# git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
## 编译静态页面
[root@localhost local]# cd wvp-GB28181-pro/web_src/
[root@localhost web_src]# npm --registry=https://registry.npm.taobao.org install
[root@localhost web_src]# npm run build
## 打包项目, 生成可执行jar
[root@localhost web_src]# cd ..
[root@localhost wvp-GB28181-pro]# mvn package
## 编译完成后在target目录下出现wvp-pro-x.x-xxxxxxxx.jar
## 导入MySQL文件
[root@localhost wvp-GB28181-pro]# cd sql/
[root@localhost sql]# mysql -uroot -p123456
MySQL> create database wvp_31;
MySQL> use wvp_31;
MySQL> source mysql.sql
MySQL> source update.sql;
MySQL> exit
## 配置文件修改
[root@localhost sql]# cd ../
[root@localhost wvp-GB28181-pro]# mv src/main/resources/application-dev.yml target/application.yml
[root@localhost wvp-GB28181-pro]# cd target/
[root@localhost target]# vim application.yml
spring:
# [可选]上传文件大小限制
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
# REDIS数据库配置
redis:
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 192.168.1.31
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
database: 6
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
password: 123456
# [可选] 超时时间
timeout: 10000
# mysql数据源
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.1.31:3306/wvp_31?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
username: root
password: 123456
druid:
initialSize: 10 # 连接池初始化连接数
maxActive: 200 # 连接池最大连接数
minIdle: 5 # 连接池最小空闲连接数
maxWait: 60000 # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
keepAlive: true # 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
validationQuery: select 1 # 检测连接是否有效sql,要求是查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
testWhileIdle: true # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
testOnBorrow: false # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn: false # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
poolPreparedStatements: false # 是否開啟PSCache,並且指定每個連線上PSCache的大小
timeBetweenEvictionRunsMillis: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
minEvictableIdleTimeMillis: 300000 # 配置一個連線在池中最小生存的時間,單位是毫秒
filters: stat,wall,slf4j # 配置监控统计拦截的filters,监控统计用的filter:sta, 日志用的filter:log4j, 防御sql注入的filter:wall
useGlobalDataSourceStat: true # 合并多个DruidDataSource的监控数据
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
#stat-view-servlet.url-pattern: /admin/druid/*
#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18080
# 作为28181服务器的配置
sip:
# [必须修改] 本机的IP
ip: 192.168.1.31
# [可选] 28181服务监听的端口
port: 5060
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
# 后两位为行业编码,定义参照附录D.3
# 3701020049标识山东济南历下区 信息行业接入
# [可选]
domain: 4401020049
# [可选]
id: 44010200492000000001
# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
password: 123456
#zlm 默认服务器配置
media:
id: ZLM_31 ## ZLMediaKit配置的ID
# [必须修改] zlm服务器的内网IP
ip: 192.168.1.31
# [必须修改] zlm服务器的http.port
http-port: 80
# [可选] zlm服务器的hook.admin_params=secret
secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功
port-range: 30000,30500 # 端口范围
# [可选] 国标级联在此范围内选择端口发送媒体流,
send-port-range: 30000,30500 # 端口范围
# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
record-assist-port: 0
# [根据业务需求配置]
user-settings:
# [可选] 服务ID,不写则为000000
server-id:
# [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true
auto-apply-play: false
# [可选] 部分设备需要扩展SDP,需要打开此设置
senior-sdp: false
# 保存移动位置历史轨迹:true:保留历史数据,false:仅保留最后的位置(默认)
save-position-history: false
# 点播等待超时时间,单位:毫秒
play-timeout: 3000
# 上级点播等待超时时间,单位:毫秒
platform-play-timeout: 60000
# 是否开启接口鉴权
interface-authentication: true
# 接口鉴权例外的接口, 即不进行接口鉴权的接口,尽量详细书写,尽量不用/**,至少两级目录
interface-authentication-excludes:
- /api/v1/**
# 推流直播是否录制
record-push-live: false
# 国标是否录制
record-sip: false
# 是否将日志存储进数据库
logInDatebase: false
# 使用推流状态作为推流通道状态
use-pushing-as-status: true
# 按需拉流, true:有人观看拉流,无人观看释放, false:拉起后不自动释放
stream-on-demand: true
# 推流鉴权, 默认开启
push-authority: true
# [可选] 日志配置, 一般不需要改
logging:
config: classpath:logback-spring-local.xml
# 版本信息, 不需修改
version:
version: "@project.version@"
description: "@project.description@"
artifact-id: "@project.artifactId@"
创建system启动文件
[root@localhost target]# vim /usr/lib/systemd/system/wvp-pro.service
[Unit]
Description=wvp-pro.service
[Service]
WorkingDirectory=/usr/local/wvp-GB28181-pro/target
PrivateTmp=true
Restart=always
Type=simple
ExecStart=/usr/local/jdk/bin/java -jar /usr/local/wvp-GB28181-pro/target/wvp-pro-2.3.2-11100927.jar ##注意jar包名字
ExecStop=/usr/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
## 启动wvp-pro
[root@localhost target]# systemctl daemon-reload
[root@localhost target]# systemctl start wvp-pro.service
[root@localhost target]# systemctl enable wvp-pro.service
## 访问管理页面
http://192.168.1.31:18080
默认用户名:admin, 密码:admin
关闭防火墙或者开放相关端口
[root@localhost target]# systemctl stop firewalld //关闭防火墙
[root@localhost target]# firewall-cmd --zone=public --add-port=5060/tcp --permanent ## sip接口
[root@localhost target]# firewall-cmd --zone=public --add-port=5060/udp --permanent ## sip接口
[root@localhost target]# firewall-cmd --zone=public --add-port=18080/tcp --permanent ## wvp平台端口
[root@localhost ~]# firewall-cmd --reload //开放端口后 需要更新一下
1、摄像头和wvp平台无网络问题
2、摄像头带有平台接入支持国标28181
3、wvp信息不要填错
4、设备编号不要冲突
5、通道编号不要冲突
查看
1、查看信息是否注册成功
平台–>国标设备–>有注册摄像头信息
2、查看摄像头是否能正常播放
平台–>分屏监控–>点击通道