未分类 · 2024年11月10日

国标28181平台编译搭建

参考文档:

1、GB28181服务器保姆级编译教程 (qq.com)

2、使用最新版的wvp和ZLMediaKit搭建Gb28181测试服务器-CSDN博客

3、zlm启用webrtc编译指南 · ZLMediaKit/ZLMediaKit Wiki · GitHub

服务器使用的是Ubuntu server 24.04.1 LTS

切换到root账号下操作 最好开启root账号ssh登录

1、安装依赖

apt-get install -y openjdk-11-jre git maven nodejs build-essential npm cmake gcc openssl libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg

2、安装redis

sudo apt update
sudo apt install redis-server
redis-server
systemctl status redis
redis-cli

3、安装mysql

sudo apt install mysql-server mysql-client
systemctl status mysql
systemctl start mysql
mysql –version
配置mysql
免密进入mysql
sudo mysql -uroot
your_new _password 修改成用户密码
alter user ‘root’@’localhost’ identified with mysql_native_password by ‘admin123’;
mysql -u root -p
use mysql;
root账号可以访问所有主机
update user set host=’%’ where user= ‘root’;
flush privileges;
授权
grant all on . to ‘root’@’%’;
flush privileges;
quit;

拷贝数据库文件到config文件夹
cp wvp-GB28181-pro/数据库/2.7.3/初始化-mysql-2.7.3.sql config/mysql.sql
#进入mysql
mysql -u root -p
create DATABASE wvp;
use wvp;
source /root/config/mysql.sql;
flush privileges; exit

4、编译 zLMediakit

cd ~
git clone https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
git submodule update –init
mkdir build
cd build
cmake ..
make -j4

编译完成后生成的文件在release/linux/Debug目录下

5、编译wvp-GB28181-pro

cd ~
git clone https://github.com/648540858/wvp-GB28181-pro.git
cd wvp-GB28181-pro/web_src/
npm –registry=https://registry.npmmirror.com install
npm run build

编译完成后回到wvp-GB28181-pro目录执行可执行jar
mvn package

生成WAR
mvn package -P war

6、修改配置文件

cd ~
mkdir config
拷贝配置文件到config文件夹 路径不对自行修改
wvp-GB28181-pro/target/classes/配置详情.yml 拷贝到config目录 重命名为wvp_gb28181.yml
ZLMediaKit/release/linux/Debug/config.ini config

修改config.ini文件
[api]
#和 wvp_gb28181.yml 中 media:secret: 一致
secret=021334523TF8yT83wh5432W4vz25273342f7

[general]
#和 wvp_gb28181.yml 中 media:id: 一致
mediaServerId=XwFtVZrtZbHJq4UV13213

[http]
#和 wvp_gb28181.yml 中 media:http-port: 一致
port=7080

[rtp_proxy]
#和 wvp_gb28181.yml 中 media:rtp:port-range: 一致
port_range=30000-40000

修改wvp_gb28181.yml文件

media:
	#和ZLMediaKit设置一致
	secret: 021334523TF8yT83wh5432W4vz25273342f7
	id: XwFtVZrtZbHJq4UV13213
	http-port: 7080
	rtp:
		port-range: 30000,40000
	
	# [必须修改] zlm服务器的内网IP
	ip: 实际IP地址
	hook-ip: 实际IP地址

数据库:

dynamic:
primary: master
datasource:
master:
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
username: root
password: admin123
hikari:
connection-timeout: 20000 # 是客户端等待连接池连接的最大毫秒数
initialSize: 50 # 连接池初始化连接数
maximum-pool-size: 200 # 连接池最大连接数
minimum-idle: 10 # 连接池最小空闲连接数
idle-timeout: 300000 # 允许连接在连接池中空闲的最长时间(以毫秒为单位)
max-lifetime: 1200000 # 是池中连接关闭后的最长生命周期(以毫秒为单位)

sip:
    ip: 实际IP地址
    # [可选] 没有任何业务需求,仅仅是在前端展示的时候用
    show-ip: 实际IP地址
    # [可选] 28181服务监听的端口
    port: 5060
    # [可选]
    domain: 4401020041
    # [可选]
    id: 44010200492000000001
    # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
    password: admin123    

#web访问
server:
    port: 18080
 SSL根据需求是否保留
# [根据业务需求配置]
user-settings:
    # 跨域配置,不配置此项则允许所有跨域请求,配置后则只允许配置的页面的地址请求, 可以配置多个
    allowed-origins:
        - http://localhost:8008
        - http://192.168.47.251:8008

进入config目录 新建zmk.sh

nano zmk.sh 复制下面的内容 并保存
WVP_ZLM_PLATFORM_PATH=/root
ZLMEDIAKIT_MEDIASERVER=${WVP_ZLM_PLATFORM_PATH}/ZLMediaKit/release/linux/Debug/MediaServer
ZLMEDIAKIT_CONFIG_FILE=${WVP_ZLM_PLATFORM_PATH}/config/ZLMediaKit.ini
sudo ${ZLMEDIAKIT_MEDIASERVER} -c ${ZLMEDIAKIT_CONFIG_FILE}

新建wvp_gb28181.sh

nano wvp_gb28181.sh 拷贝下面的内容
WVP_ZLM_PLATFORM_PATH=/root
WVP_GB28181_JAR=${WVP_ZLM_PLATFORM_PATH}/wvp-GB28181-pro/target/wvp-pro-2.7.3-10250742.jar
WVP_GB28181_CONFIG_FILE=${WVP_ZLM_PLATFORM_PATH}/config/wvp_gb28181.yml
sudo java -jar ${WVP_GB28181_JAR} –spring.config.location=${WVP_GB28181_CONFIG_FILE}

先运行 zmk.sh bash zmk.sh 另开一个窗口 运行bash wvp_gb28181.sh 查看是否运行正常