WVP-GB28181-PRO 编译+部署+问题排查整理

目录


目标效果:


简介:


1:查看操作系统信息


2:安装java环境


3:数据库


4:安装redis


5:安装编译器


6:安装cmake


7:安装依赖库


8:编译ZLMediaKit


9:编译wvp-GB28181-pro


10:编译结果证明


11:配置


11.1:WVP-PRO配置文件


11.1.1 Mysql数据库配置


11.1.2 REDIS数据库配置


11.1.3 配置服务启动端口


11.1.3 配置28181相关信息


11.1.4 配置ZLMediaKit连接信息


11.1.6个性化定制信息配置


12 ZLMediaKit配置文件


12.1 使用


12.2 ZLM配置


13:相关排查指令


示例配置文件:


Web前端设置,公网部署时


运行过程的问题报错排查


排查1:


排查2:


排查3:


排查4:


排查5:


排查6:


排查7:


最后的application.yml配置参考:


 14:docker部署


  14.1 docker 安装


14.2 Docker Compose 安装


14.3 编译wvp docker


15:编译方式部署-守护进程


目标效果:



WVP-GB28181-PRO公网部署(ubuntu)+ZLM+WVP部署在同一个服务器 和问题排查点 ,提供给大家做参考,跟着编译部署一遍基本没问题。内容比较长。


简介:

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


git地址:

wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。

https://gitee.com/pan648540858/wvp-GB28181-pro


1:查看操作系统信息

lsb_release -a


root@hecs-76136:/mnt/wvp28181pro# lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 20.04.4 LTS

Release:        20.04

2:安装java环境

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


3:数据库

sudo apt update


sudo apt install mysql-server mysql-client


验证数据库安装 :


客户端:mysql -V


服务端:mysql -u root -p


输入密码时直接回车 后输入:mysql> SELECT VERSION();


4:安装redis

sudo apt install redis-server


#启动


redis-server


#查看Redis是否正常


systemctl status redis


redis-cli #输入ping返回PONG表示正常


root@hecs-76136:/mnt/wvp28181pro# redis-server

1591727:C 22 Nov 2024 15:49:36.326 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

1591727:C 22 Nov 2024 15:49:36.326 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1591727, just started

1591727:C 22 Nov 2024 15:49:36.326 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

1591727:M 22 Nov 2024 15:49:36.327 # Could not create server TCP listening socket *:6379: bind: Address already in use

root@hecs-76136:/mnt/wvp28181pro# systemctl status redis

● redis-server.service - Advanced key-value store

     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)

     Active: active (running) since Fri 2024-11-22 15:46:29 CST; 3min 19s ago

       Docs: http://redis.io/documentation,

             man:redis-server(1)

   Main PID: 1590969 (redis-server)

      Tasks: 4 (limit: 4612)

     Memory: 1.9M

     CGroup: /system.slice/redis-server.service

             └─1590969 /usr/bin/redis-server 127.0.0.1:6379

 

Nov 22 15:46:29 hecs-76136 systemd[1]: Starting Advanced key-value store...

Nov 22 15:46:29 hecs-76136 systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: Operation not permitted

Nov 22 15:46:29 hecs-76136 systemd[1]: Started Advanced key-value store.

root@hecs-76136:/mnt/wvp28181pro# redis-cli

127.0.0.1:6379> ping

PONG

127.0.0.1:6379>


5:安装编译器

sudo apt install build-essential


6:安装cmake

sudo apt update


sudo apt install cmake


cmake --version


7:安装依赖库

#除了openssl,其他其实都可以不安装


sudo apt install -y libssl-dev


sudo apt install -y libsdl1.2-dev


sudo apt install -y libavcodec-dev


sudo apt install -y libavutil-dev


sudo apt install -y ffmpeg


8:编译ZLMediaKit

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit


cd ZLMediaKit


git submodule update --init


#编译


mkdir build


cd build


cmake ..


make -j4


9:编译wvp-GB28181-pro

git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git


#1.编译前端页面


cd wvp-GB28181-pro/web_src/


npm --registry=https://registry.npmmirror.com install


npm run build




#编译完成后会生成目录: wvp-GB28181-pro/src/main/resources/static


#2.生成可执行jar


cd wvp-GB28181-pro


mvn package


#编译后生成文件: wvp-GB28181-pro/target/wvp-pro-2.7.18-11220820.jar




#3.生成war


cd wvp-GB28181-pro


mvn package -P war


#编译后生成文件: wvp-GB28181-pro/target/wvp-pro-2.7.18-11220828.war


10:编译结果证明

11:配置

两个配置文件:


1:WVP-PRO配置文件


2:ZLMediaKit配置文件


11.1:WVP-PRO配置文件

./src/main/resources/application.yml


./target/classes/application.yml


./target/wvp-pro-2.7.0-01260312/WEB-INF/classes/application.yml


./src/main/resources/all-application.yml


./target/classes/all-application.yml


./target/wvp-pro-2.7.0-01260312/WEB-INF/classes/all-application.yml


all-application.yml,application.yml使用哪一组都可以,这里使用application.yml进行修改.最近的版本里没有all-application.yml了。直接使用上面的application.yml一样的。


下面的配置是在application.yml 中配置的


11.1.1 Mysql数据库配置

这里有两点注意:


1:share数据库删除


2: master数据库wvp2需要修改为wvp,必须要和建立的数据库名称对应


# [必选] jdbc数据库配置

datasource:

# mysql配置

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: root123

hikari:

connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数

initialSize: 50                       # 连接池初始化连接数

maximum-pool-size: 200                # 连接池最大连接数

minimum-idle: 10                       # 连接池最小空闲连接数

idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)

max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)


中间插下操作=》接下来在服务器上进去MySQL设置 在要部署的服务器中设置


#查看数据库状态


systemctl status mysql


#进入mysql


mysql -u root -


#mysql更改


use mysql;


update user set host='%' where user= 'root';


flush privileges;


select host,user,plugin from user where user='root';


#更改root用户密码为root123,参考上面的配置


alter user 'root'@'%' identified with mysql_native_password by 'root123';


flush privileges;


grant all on *.* to 'root'@'%';


flush privileges;


#wvp数据库修改,需要和url: jdbc:mysql://127.0.0.1:3306/wvp?对应


#初始化-mysql-2.7.3.sql是源代码中对应路径下附带的初始化sql ,替换路径就行


create DATABASE wvp;


use wvp;


source /mnt/wvp28181pro/wvp-GB28181-pro/数据库/2.7.3/初始化-mysql-2.7.3.sql


flush privileges;


Exit


11.1.2 REDIS数据库配置

直接按照第4步骤安装就行,没有设置密码的话,wvp里的redis配置,注意密码要为空




11.1.3 配置服务启动端口

 

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

server:

    port: 18080

11.1.3 配置28181相关信息

sip:

#SIP信令服务器IP地址

    ip: 你的公网ip

    port: 8116

    domain: 3204020043

    id: 32040200432162000001

    password: 456123

11.1.4 配置ZLMediaKit连接信息

#zlm 默认服务器配置

media:

   # ZLMediaKit的服务ID,必须配置

    id: htketiannanpro

    # [必须修改] zlm服务器的内网IP,sdp-ip与stream-ip使用默认值的情况下,这里不要使用127.0.0.1/0.0.0.0

    ip:  你的公网ip

    # [必须修改] zlm服务器的http.port

    http-port: 80       

    # [可选] 返回流地址时的ip,置空使用 media.ip

    #stream-ip:

    # [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip

    #sdp-ip:

    # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip

    #hook-ip:  

    # [可选] zlm服务器的http.sslport, 置空使用zlm配置文件配置

    #http-ssl-port:

    # [可选] zlm服务器的rtmp.port, 置空使用zlm配置文件配置

    #rtmp-port:

    # [可选] zlm服务器的rtmp.sslport, 置空使用zlm配置文件配置

    #rtmp-ssl-port:

    # [可选] zlm服务器的 rtp_proxy.port, 置空使用zlm配置文件配置

    #rtp-proxy-port:

    # [可选] zlm服务器的 rtsp.port, 置空使用zlm配置文件配置

    #rtsp-port:

    # [可选] zlm服务器的 rtsp.sslport, 置空使用zlm配置文件配置

    #rtsp-ssl-port:    

    # [可选] zlm服务器的hook.admin_params=secret

    secret: BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x

    # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试

    rtp:

        # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输

        enable: true

        # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功

        port-range: 40000,45000 # 端口范围

        # [可选] 国标级联在此范围内选择端口发送媒体流,请不要与收流端口范围重合

        send-port-range: 35002,35006 # 端口范围    


***配置ZLMediaKit连接信息注意点**:


1:id必须和12.2.ZLM配置中general.mediaServerId设置一致


2: ip必须正确设置


3:http-port和12.2.ZLM配置中http.port相同


4:secret和12.2.ZLM配置中api.secret相同


5:rtp和12.2.ZLM配置配置中rtp_proxy.rtp_proxy相同


11.1.6个性化定制信息配置

# [根据业务需求配置]

user-settings:

  # 点播/录像回放 等待超时时间,单位:毫秒

  play-timeout: 180000

  # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true

  auto-apply-play: true

  # 推流直播是否录制

  record-push-live: false

  # 国标是否录制

  record-sip: false

  # 国标点播 按需拉流, true:有人观看拉流,无人观看释放, false:拉起后不自动释放

  stream-on-demand: true

12 ZLMediaKit配置文件

12.1 使用

./release/linux/Debug/config.ini

./conf/config.ini

 

#默认使用./release/linux/Debug/config.ini

 

#修改并保存配置文件后,运行如下命令就能使ZLMediaKit热加载配置文件,而不必先关闭服务然后再开启

killall -1 MediaServer`

12.2 ZLM配置

[api]

    #一些比较敏感的http api在访问时需要提供secret,否则无权限调用

    #如果是通过127.0.0.1访问,那么可以不提供secret

    secret=BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x

 

[general]

    #服务器唯一id,用于触发hook时区别是哪台服务器

    mediaServerId=htketiannanpro

 

[http]

    #http服务器监听端口

    port=80

 

[rtp_proxy]

    #随机端口范围,最少确保36个端口

    #该范围同时限制rtsp服务器udp端口范围

    port_range=40000-45000


13:相关排查指令

#我现在 在wvp下的websrc/config/index中http请求的127.0.0.1改成 公网ip.web部署在公网,需要公网打开。




curl ipinfo.io/ip  #查看公网地址


sudo iptables -L -n  #查看防护墙 端口规则 防火墙会会导致不通


sudo netstat -tulnp | grep 18080  #查看端口被哪个服务监听 端口未开放 会导致不通


#允许TCP和UDP流量通过18080端口的iptables规则


sudo iptables -A INPUT -p udp --dport 18080 -j ACCEPT 


sudo iptables -A INPUT -p tcp --dport 18080 -j ACCEPT


df                #查看磁盘占用情况  磁盘满了 会运行报错,或者数据库相关错误


du -sh /* | sort -hr  #查看哪个盘占用的内存最多


示例配置文件:



Web前端设置,公网部署时





运行过程的问题报错排查

排查1:



这个主要检查下


wvp 和 zlm下面配置要保持一致, 每一个都会导致wvp zlm的联通出问题




排查2:



这种数据库错误要检查下 mysql数据源中datasource:的数据库用户密码是否正确


排查3:

碰到这种错误,要检查 redis这块的部分设置


排查4:

碰到编译或者运行错误的,注意看提示:比如no space 这种 就是磁盘满了导致的,这时使用


df                #查看磁盘占用情况  


du -sh /* | sort -hr  #查看哪个盘占用的内存最多


排查5:

运行失败时还会因为mysql未启动 ,或者提示 初始化数据失败时,基本都是mysql未启动或者 因为内存满了导致mysql未启动导致的


排查6:

配置中 media的ip、 id 、wan_ip 、 sdp_ip、 wan_ip要正确设置,公网的话 要设置对


排查7:

运行后报错,和 Redis有关


检查redis运行状态,和运行测试后 执行ping 返回 PONG说明正常


通过df 发现磁盘满了,无法写入RDB.这个是定时写入快照备份的,太消耗空间,这里取消关闭。




打开/etc/redis/redis.conf


配置文件,将类似 save <seconds> <changes>的内容 删除或者#屏蔽掉。


执行systemctl restart redis


重启生效,如果一直在重启中 不返回可以直接kill掉:  sudo pkill -9 redis-server




http api access-token web上抓前端包得到 例如我的是如下!


这里在web 前端界面上 有个在线文档,上面测试接口时需要。


JhbGciOiJSUzI1NiIsImtpZCI6IjNlNzk2NDZjNGRiYzQwODM4M2E5ZWVkMDlmMmI4NWFlIn0.eyJqdGkiOiJ3VGhsUDJ1M0IzR3RJbzV1bGlJbmVRIiwiaWF0IjoxNzMyNTE5ODA2LCJleHAiOjE3MzUxMTE4MDYsIm5iZiI6MTczMjUxOTgwNiwic3ViIjoibG9naW4iLCJhdWQiOiJBdWRpZW5jZSIsInVzZXJOYW1lIjoiYWRtaW4ifQ.aF2_Xd-_tYhn2KQf7UVF_XeQF3fRlRgSAgctlIw-GOC9oIsaUKXtUZL8ONqsewtaZxCrVuWgOnJNiXVViPnuNi3f3MDGOQ2xCIvDLpLCABekOK7ryCXMEkJ2F7ccIEAW_HBxOmxq5iqmsOaEJX8ofqvrj9dWmo8CbLTWYtF_FK5qlRXR3BmRYaA01m7AehzqulDl60YmnRhlf13sTLwYKunSA_Pvh4gNdGXelAkx-zoEPgVHpzKXDoG9vYp1KZWXvIP2MTIzKrIZKr6_8G2-4KdtDD7ZCGV5-KH107kDJArJXTDPej8w23A14ogFM6vJJF8AyAhtkpXMivdgmam


最后的application.yml配置参考:

spring:


  # 设置接口超时时间


  mvc:


    async:


      request-timeout: 20000


  thymeleaf:


    cache: false


  # [可选]上传文件大小限制


  servlet:


    multipart:


      max-file-size: 10MB


      max-request-size: 100MB


  cache:


    type: redis


  # REDIS数据库配置


  redis:


    # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1


    host: 127.0.0.1


    # [必须修改] 端口号


    port: 6379


    # [可选] 数据库 DB


    database: 7


    # [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接


    password:


    # [可选] 超时时间


    timeout: 10000


    # mysql数据源


  datasource:


    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: root123


          hikari:


            connection-timeout: 20000             # 是客户端等待连接池连接的最大毫秒数


            initialSize: 50                       # 连接池初始化连接数


            maximum-pool-size: 200                # 连接池最大连接数


            minimum-idle: 10                       # 连接池最小空闲连接数


            idle-timeout: 300000                  # 允许连接在连接池中空闲的最长时间(以毫秒为单位)


            max-lifetime: 1200000                 # 是池中连接关闭后的最长生命周期(以毫秒为单位)


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


server:


  port: 18080


  # [可选] HTTPS配置, 默认不开启


  ssl:


    # [可选] 是否开启HTTPS访问


    enabled: false


    # [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名


    key-store: classpath:test.monitor.89iot.cn.jks


    # [可选] 证书密码


    key-store-password: gpf64qmw


    # [可选] 证书类型, 默认为jks,根据实际修改


    key-store-type: JKS


# 作为28181服务器的配置


sip:


  # [可选] 28181服务监听的端口


  port: 8116


  # 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)


  # 后两位为行业编码,定义参照附录D.3


  # 3701020049标识山东济南历下区 信息行业接入


  # [可选]


  domain: 3204020043


  # [可选]


  id: 32040200432162000001


  # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验


  password: 456123


  # 是否存储alarm信息


  alarm: false


#zlm 默认服务器配置


media:


  id: htketiannanpro


  # [必须修改] zlm服务器的内网IP


  ip: 192.168.0.174


  # [可选] 有公网IP就配置公网IP, 不可用域名


  wan_ip: 你的公网ip


  stream-ip: 你的公网ip


  # [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip


  sdp-ip: 你的公网ip


  # [可选] zlm服务器访问WVP所使用的IP, 默认使用127.0.0.1,zlm和wvp没有部署在同一台服务器时必须配置


  hook-ip: 192.168.0.174


  # [必须修改] zlm服务器的http.port


  http-port: 80


  # [必选选] zlm服务器的hook.admin_params=secret


  secret: BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x


  # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试


  rtp:


    # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输


    enable: true


    # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功


    port-range: 40000,45000 # 端口范围


    # [可选] 国标级联在此范围内选择端口发送媒体流,


    send-port-range: 50000,55000 # 端口范围


# [根据业务需求配置]


user-settings:


  # 点播/录像回放 等待超时时间,单位:毫秒


  play-timeout: 180000


  # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true


  auto-apply-play: true


  # 推流直播是否录制


  record-push-live: true  #录播需要注意 会占用内存 需要策略处理


  # 国标是否录制


  record-sip: true  #录播需要注意 会占用内存 需要策略处理


  # 国标点播 按需拉流, true:有人观看拉流,无人观看释放, false:拉起后不自动释放


  stream-on-demand: true


 14:docker部署

  14.1 docker 安装

Docker 是一个开源平台,用于开发、交付和运行应用程序。它允许开发者打包他们的应用以及应用的依赖包到一个轻量级、可移植的容器中,然后发布到任何支持 Docker 的平台上。


sudo apt-get update #更新软件包


sudo apt-get install ca-certificates curl gnupg lsb-release  #安装docker依赖


curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -


#添加docker密钥


sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"


#添加阿里云docker软件源


apt-get install docker-ce docker-ce-cli containerd.i


#安装docker


//-------


#配置用户组(非必须操作,此操作目的是为了以后执行docker命令时无需输入sudo密码)


sudo usermod -aG docker $USER


sudo reboot


//---------


systemctl start docker  #启动Docker服务


sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common


#apt-transport-https:允许APT通过HTTPS获取软件包。


#a-certificates:包含证书权威机构的证书,用于验证HTTPS连接。


#curl:一个命令行工具,用于传输数据,常用于下载文件。


#software-properties-common:包含添加和管理软件源的工具。 -y参数表示自动回答“yes”来确认安#装,无需手动干预。


service docker restart #重启Docker服务


sudo docker run hello-world


#用于测试Docker是否正确安装。docker run命令用于运行一个新的容器实例。


#hello-world是一个特殊的Docker镜像,它被设计为Docker安装后的测试镜像。当你运行这个命令#时,Docker会从Docker Hub下载hello-world镜像(如果本地没有的话),并运行它。


#如果Docker安装正确,并且你的系统可以连接到Docker Hub,这个命令会输出一条欢迎消息,并#显示Docker的版本信息。如果出错 没关系,因为没有安装image,运行下面语句 有版本号返回就成功了


root@hecs-76136:~# docker --version


Docker version 27.3.1, build ce12230


root@hecs-76136:~#


sudo docker images  #查看镜像,有ID之类就是安装的,一行就是没安装,我这里就是没安装


root@hecs-76136:~# sudo docker images


REPOSITORY   TAG       IMAGE ID   CREATED   SIZE


root@hecs-76136:~#


14.2 Docker Compose 安装

Docker Copose 是 Docker 官方支持的一个工具,用于定义和运行多容器 Docker 应用程序。它允许用户通过一个 YAML 文件(docker-compose.yml)来配置应用程序的服务,然后使用一个简单的命令 docker-compose up 来启动所有服务。


Docker Compose 是 Docker 生态系统的一部分,但它不是 Docker 的核心组件,需要单独安装


sudo apt-get update


sudo apt-get install -y docker-compose 


docker-compose --version


14.3 编译wvp docker

wvp使用的docker-compose.yml配置启动=》wvp/Dockfile的方式


yml方式需要使用Docker Compose。


进入到/mnt/wvp28181pro/wvp-GB28181-pro/docker目录下 也就是docker-compose.yml所在目录


2025-05-06 53

文章列表

联系信息

QQ:29303658

电话:17155154060

邮箱:cds425@163.com

地址:联系地址