Ubuntu搭建国标平台wvp-GB28181-pro_国标平台搭建-程序员宅基地

技术标签: wvp-GB28181-pro  GB28181  音视频编解码和流媒体  

简介

官网wvp-GB28181-pro: https://doc.wvp-pro.cn/#/

流媒体服务器: https://github.com/ZLMediaKit/ZLMediaKit

WVP-PRO使用Spring boot开发,maven管理依赖。

参考官网既可安装部署.

为了方便搭建,开源软件以后修改可能导致配置失败,把ZLMediaKit和wvp-GB28181-pro配置文件和项目commit ID记录到仓库中.

https://gitee.com/fedorayang/wvp-gb28181-pro_-zlmedia-kit_config.git

安装和编译

Ubuntu 22.04.3 LTS为例

1.查看操作系统信息

lsb_release -a
#输出一下信息
LSB Version:    core-11.1.0ubuntu4-noarch:security-11.1.0ubuntu4-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

2.安装最新版的nodejs

参考 ubuntu安装nodejs环境: https://blog.csdn.net/fedorayang/article/details/135837204

3.安装java环境

sudo apt install -y openjdk-11-jre maven

#确认java安装成功
java --version
#输出版本信息
openjdk 11.0.21 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)

4.安装mysql

mysql如果以前安装过其他数据库可能存在冲突,需要完全卸载后安装,具体安装步骤参考 myql入门: https://blog.csdn.net/fedorayang/article/details/135847981

5.安装redis

sudo apt update
sudo apt install redis-server

#启动
redis-server

#查看Redis是否正常
systemctl status redis
redis-cli
#输入ping返回PONG表示正常

6.安装编译器

sudo apt install build-essential

7.安装cmake

参考文章 cmake入门: https://blog.csdn.net/fedorayang/article/details/134513536

8.安装依赖库

#除了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

9.编译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.1.编译结果说明

编译结果在release目录下,主要有三部分组成:

  • MediaServer 进程

    cd ZLMediaKit/release/linux/Debug
    #通过-h可以了解启动参数
    ./MediaServer -h
    
  • c api 的 SDK

头文件在ZLMediaKit/api/include
库文件为:ZLMediaKit/release/linux/Debug/libmk_api.so
  • test_开头的测试程序

相关代码在ZLMediaKit/tests目录下,你可以对照代码启动测试进程。

10.编译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.0-01260305.jar

#3.生成war
cd wvp-GB28181-pro
mvn package -P war
#编译后生成文件: wvp-GB28181-pro/target/wvp-pro-2.7.0-01260312.war

10.1.编译结果说明

最终编译生成的结果在wvp-GB28181-pro/target目录,内容如下:
在这里插入图片描述

配置

有两个配置文件:1.WVP-PRO配置文件;2.ZLMediaKit配置文件.

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使用哪一组都可以,这里使用all-application.yml进行修改.

1.1.Mysql数据库配置

这里有两点注意:

  • share数据库删除
  • 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 -p

#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?对应
create DATABASE wvp;
use wvp;
source /home/multimedia/gb28181/wvp-GB28181-pro/数据库/初始化-mysql.sql
flush privileges;
exit

1.2.REDIS数据库配置

1.3.配置服务启动端口

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

1.4.配置28181相关信息

sip:
	#SIP信令服务器IP地址
    ip: 0.0.0.0
    port: 5060
    domain: 4401020049
    id: 44010200492000000001
    password: admin123

1.5.配置ZLMediaKit连接信息

#zlm 默认服务器配置
media:
   # ZLMediaKit的服务ID,必须配置
    id: FQ3TF8yT83wh5Wvz
    # [必须修改] zlm服务器的内网IP,sdp-ip与stream-ip使用默认值的情况下,这里不要使用127.0.0.1/0.0.0.0
    ip: 192.168.1.3
    # [必须修改] 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: 30000,35000 # 端口范围
        # [可选] 国标级联在此范围内选择端口发送媒体流,请不要与收流端口范围重合
        send-port-range: 35002,35006 # 端口范围    
  • id必须和2.1.配置中general.mediaServerId设置一致
  • ip必须正确设置
  • http-port和2.1.配置中http.port相同
  • secret和2.1.配置中api.secret相同
  • rtp和2.1.配置中rtp_proxy.rtp_proxy相同

1.6.个性化定制信息配置

# [根据业务需求配置]
user-settings:
    # [可选] 服务ID,不写则为000000
    #server-id:

2.ZLMediaKit配置文件

2.1.文件使用

./release/linux/Debug/config.ini
./conf/config.ini

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

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

2.1.配置

[api]
    #一些比较敏感的http api在访问时需要提供secret,否则无权限调用
    #如果是通过127.0.0.1访问,那么可以不提供secret
    secret=BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x

[general]
    #服务器唯一id,用于触发hook时区别是哪台服务器
    mediaServerId=FQ3TF8yT83wh5Wvz

[http]
    #http服务器监听端口
    port=80

[rtp_proxy]
    #随机端口范围,最少确保36个端口
    #该范围同时限制rtsp服务器udp端口范围
    port_range=30000-35000	
  • mediaServerId需要和1.5.配置ZLMediaKit连接信息中的ID设置一致
  • secret需要和1.5.配置ZLMediaKit相同

运行测试

1.运行ZLMediaKit

cd ZLMediaKit/release/linux/Debug
sudo ./MediaServer -c /home/multimedia/gb28181/config/ZLMediaKitConfig.ini

1.1.ZLMediaKit测试命令

http://192.168.1.3/
http://192.168.1.3/webassist/?secret=BkPj2ca6QPpY5RccREJq4kAOu9ZEt70x
https://192.168.1.3/webrtc/

2.运行wvp-GB28181-pro

cd wvp-GB28181-pro/target
#测试命令
sudo java -jar wvp-pro-*.jar --spring.config.location=/home/multimedia/gb28181/config/wvp-GB28181-pro-config.yml

2.1.测试命令

curl localhost:18080

http://192.168.1.3:18080/#/login
#用户名: admin
#密码: admin

3.添加GB28181设备模拟器

国标gb28181模拟环境搭建: https://blog.csdn.net/fedorayang/article/details/135498173

1.4.配置28181相关信息

<?xml version="1.0" encoding="utf-8"?>
<config>
    <server_ip>192.168.1.3</server_ip>
    <server_port>5060</server_port>
    <server_id>44010200492000000001</server_id>
    <server_domain>4401020049</server_domain>
    <password>admin123</password>
    <protocol>udp</protocol>
</config>

其他配置项默认.

设备模拟器配置好后,启动wvp-GB28181-pro自动识别到设备.
在这里插入图片描述
流传输模式:UDP,TCP被动模式最常用.

参考资料

国标gb28181保姆级入门教程: https://blog.csdn.net/fedorayang/article/details/135499219

全网首发 开源28181 国产开源系统openeuler 编译ZLMediaKit wvp-GB28181-pro: https://www.bilibili.com/video/BV1hA4y1S7Gw?vd_source=a795ec50b290a151c69819df1d6cb37a

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fedorayang/article/details/135912132

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception

邻接矩阵-建立图-程序员宅基地

文章浏览阅读358次。1.介绍图的相关概念  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:  G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象

什么是算法?-程序员宅基地

文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法

【网络安全】网络安全的标准和规范_网络安全标准规范-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范

推荐文章

热门文章

相关标签