开源项目:https://github.com/648540858/wvp-GB28181-pro
https://blog.csdn.net/qq_45384482/article/details/118074607
Doc
refer to :https://doc.wvp-pro.cn/#/
开启端口
systemctl start firewalld.service
firewall-cmd --state
firewall-cmd --add-port=18080/tcp --permanent
firewall-cmd --add-port=5060/udp --add-port=5060/tcp --permanent
firewall-cmd --add-port=8090/tcp --permanent
firewall-cmd --add-port=30000-30500/tcp --permanent
firewall-cmd --add-port=30000-30500/udp --permanent
firewall-cmd --add-port=18081/tcp --add-port=18081/udp --permanent
firewall-cmd --reload
编译安装ZLMediaKit
refer to : https://github.com/ZLMediaKit/ZLMediaKit/wiki/快速开始
获取代码
# 国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init
安装编译器
yum -y install gcc
yum -y install gcc-c++
安装cmake
yum -y install cmake
安装依赖库openssl
# 安装openssl
sudo dnf install openssl
openssl version
安装依赖库ffmpeg
refer to : https://blog.csdn.net/qq_16504067/article/details/129405716
https://juejin.cn/post/7224393585247191096
wget http://www.ffmpeg.org/releases/ffmpeg-5.0.tar.gz
tar -zxvf ffmpeg-5.0.tar.gz
cd ffmpeg-5.0/
mkdir /usr/local/ffmpeg
yum install yasm
# 如果上面安装yasm的命令,不可行,执行下面的命令 refer to :https://rockylinux.pkgs.org/8/rockylinux-devel-x86_64/yasm-1.3.0-7.el8.x86_64.rpm.html
dnf --enablerepo=devel install yasm
./configure --prefix=/usr/local/ffmpeg
make
make install
#利用vi编辑环境变量
vim /etc/profile
#在最后位置处添加环境变量,点击i进入编辑模式,esc键可退出编辑模式
export PATH=$PATH:/usr/local/ffmpeg/bin
#刷新资源,使其生效
source /etc/profile
# 查看版本
[root@VM-0-14-opencloudos ffmpeg]# ffmpeg -version
ffmpeg version 5.0 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 8 (GCC)
configuration: --prefix=/usr/local/ffmpeg
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
上面介绍的是下载ffmpeg,编译安装,还可以直接使用dnf 安装,如下:
refer to : https://citizix.com/how-to-install-ffmpeg-on-rocky-linux-alma-linux-8/
https://linuxstoney.com/how-to-install-and-use-ffmpeg-in-rocky-linux-8/
构建和编译ZLMediaKit
cd /opt/ZLMediaKit/Source/ZLMediaKit
mkdir build
cd build
cmake ..
make -j4
运行ZLMediaKit
cd /opt/ZLMediaKit/Source/ZLMediaKit/release/linux/Debug
vim config.ini
修改config.ini以下几项
# mediaServerId=your_server_id
mediaServerId=FQ3TF8yT83wh5Wvz
port=8090
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
nohup ./MediaServer -d -m 3 &
MediaServer
的启动参数如下
(base) xugaoxiang@1070Ti:~/workshop/github/ZLMediaKit/release/linux$ ./MediaServer -h
-h --help 无参 默认:null 选填 打印此信息
-d --daemon 无参 默认:null 选填 是否以Daemon方式启动
-l --level 有参 默认:0 选填 日志等级,LTrace~LError(0~4)
-m --max_day 有参 默认:7 选填 日志最多保存天数
-c --config 有参 默认:/home/xugaoxiang/workshop/github/ZLMediaKit/release/linux/config.ini 选填 配置文件路径
-s --ssl 有参 默认:/home/xugaoxiang/workshop/github/ZLMediaKit/release/linux/default.pem 选填 ssl证书文件或文件夹,支持p12/pem类型
-t --threads 有参 默认:4 选填 启动事件触发线程数
-v --version 无参 默认:null 选填 显示版本号
参数的含义,原作者非常用心,在帮助信息里写的很清楚,点个赞
ZLMediaKit配置文件详解
refer to : https://juejin.cn/post/7012816470061105165
安装wvp-pro
初始化Mysql数据库
CREATE DATABASE wvp DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
修改配置文件
application-dev.yml 内容如下:
spring:
# [可选]上传文件大小限制
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
# REDIS数据库配置
redis:
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 1.13.16.140
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
database: 6
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
password: 123456
# [可选] 超时时间
timeout: 10000
# mysql数据源
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://1.13.16.140:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
username: root
password: es0s1oJvm@Mysql
hikari:
connection-timeout: 20000 # 是客户端等待连接池连接的最大毫秒数
initialSize: 10 # 连接池初始化连接数
maximum-pool-size: 200 # 连接池最大连接数
minimum-idle: 5 # 连接池最小空闲连接数
idle-timeout: 300000 # 允许连接在连接池中空闲的最长时间(以毫秒为单位)
max-lifetime: 1200000 # 是池中连接关闭后的最长生命周期(以毫秒为单位)
#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18080
# 作为28181服务器的配置
sip:
# [必须修改] 本机的IP,对应你的网卡,监听什么ip就是使用什么网卡,
# 如果要监听多张网卡,可以使用逗号分隔多个IP, 例如: 192.168.1.4,10.0.0.4
# 如果不明白,就使用0.0.0.0,大部分情况都是可以的
# 请不要使用127.0.0.1,任何包括localhost在内的域名都是不可以的。
ip: 0.0.0.0
# [可选] 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:
id: FQ3TF8yT83wh5Wvz
# [必须修改] zlm服务器的内网IP
ip: 10.0.0.14
# [必须修改] zlm服务器的http.port
http-port: 8090
# [可选] 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: 18081
# [可选] 日志配置, 一般不需要改
logging:
config: classpath:logback-spring-local.xml
部署wvp-pro
mvn clean
mvn package
rm -rf /opt/Wvp/wvp-pro-*.jar
cp /opt/Wvp/Source/wvp-GB28181-pro/target/wvp-pro-*.jar /opt/Wvp/
nohup java -jar wvp-pro-*.jar &
-----------------------------------
cp /opt/wvp-GB28181-pro/target/wvp-pro-*.jar /opt/WvpExe/
nohup java -jar wvp-pro-*.jar &
FAQ
1.启动报错如下:
2023-04-26 20:41:33.773 ERROR --- SipLayer : [Sip Server] tcp://1.13.175.185:5060 SIP服务启动失败,请检查端口是否被占用或者ip是否正确
2023-04-26 20:41:33.782 ERROR --- SipLayer : [Sip Server] udp://1.13.175.185:5060 SIP服务启动失败,请检查端口是否被占用或者ip是否正确
解决方案:https://github.com/648540858/wvp-GB28181-pro/issues/826
支持录像
refer to : https://gitee.com/pan648540858/wvp-pro-assist
https://github.com/648540858/wvp-GB28181-pro/wiki/云端录像功能部署与使用#云端录像提供的功能
git clone https://gitee.com/pan648540858/wvp-pro-assist.git
cd wvp-pro-assist
修改配置文件
application.yml 的active 设置为dev
spring:
profiles:
active: dev
application-dev.yml内容修改如下:
spring:
# REDIS数据库配置
redis:
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 1.13.16.140
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
database: 8
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
password: 123456
# [可选] 超时时间
timeout: 10000
# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18081
# [可选] HTTPS配置, 默认不开启
ssl:
# [可选] 是否开启HTTPS访问
enabled: false
# [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名
key-store: classpath:xxx.jks
# [可选] 证书密码
key-password: password
# [可选] 证书类型, 默认为jks,根据实际修改
key-store-type: JKS
# [根据业务需求配置]
userSettings:
# [可选 ] zlm配置的录像路径,
record: /opt/Wvp-pro-assist/camera/record/
# [可选 ] 录像保存时长(单位: 天)每天晚12点自动对过期文件执行清理
recordDay: 7
# [可选 ] 录像下载合成临时文件保存时长, 不配置默认取值recordDay(单位: 天)每天晚12点自动对过期文件执行清理
# recordTempDay: 7
# [必选 ] ffmpeg路径
ffmpeg: /usr/local/ffmpeg/bin/ffmpeg
# [必选 ] ffprobe路径, 一般安装ffmpeg就会自带, 一般跟ffmpeg在同一目录,用于查询文件的信息
ffprobe: /usr/local/ffmpeg/bin/ffprobe
# [可选 ] 限制 ffmpeg 合并文件使用的线程数,间接限制cpu使用率, 默认2 限制到50%
threads: 2
id: 332211
swagger-ui:
# [可选] 日志配置, 一般不需要改
logging:
file:
name: logs/wvp.log
max-history: 30
max-size: 10MB
total-size-cap: 300MB
level:
root: WARN
top:
panll:
assist: info
部署wvp-pro-assist
mvn clean
mvn package
rm -rf /opt/Wvp-pro-assist/wvp-pro-assist-*.jar
cp /opt/Wvp-pro-assist/wvp-pro-assist/target/wvp-pro-assist-*.jar /opt/Wvp-pro-assist
cd /opt/Wvp-pro-assist
nohup java -jar wvp-pro-assist-*.jar &