WVPPro+ZLMediaKit+大华相机推流+安卓模拟GB28181设备推流
wvp pro有三种部署方式
(1)wvp pro jar包+ZLMediaKit。本文主要基于此种方式。
(2)docker hub直接下载docker,其内置了 wvp pro jar+ZLMediaKit。第10小节讲解了此种方式。
(3)docker-compose运行。docker-compose 运行wvp-pro_fang·up·ad的博客-CSDN博客
1.项目源码
WVP Pro GitHub WVP是一个GB28181平台
ZLMediaKit GitHub
安装参考教程
国标GB28181介绍_嵌入彭于晏的博客-CSDN博客_28181
2. 部署WVP Pro项目
(1)下载WVP Pro源码
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git♫)application.yml指定配置文件为application-dev.yml
spring:profiles:active: dev
♫)配置zlm节点
application-dev.yml中修改media.http-port为ZLMediaKit的config.ini配置文件http-port属性值一致;修改media.secret和config.ini的genaral.mediaServerId一致(一般情况下,如果删除节点,重新添加节点时才需要修改;如果日志报错zlm节点重复,那么需要删除wvp mysql数据库中media_server表中此节点的zlm配置信息即不会报错)。
这两个项目只需要配置这两个值。
#zlm 默认服务器配置 media:# [必须修改] zlm服务器的内网IPip: 127.0.0.1# [必须修改] zlm服务器的http.porthttp-port: 8091# [可选] zlm服务器的hook.admin_params=secretsecret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试rtp:# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输enable: true# [可选] 在此范围内选择端口用于媒体流传输,port-range: 30000,30500 # 端口范围# [可选] 国标级联在此范围内选择端口发送媒体流,send-port-range: 30000,30500 # 端口范围# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用record-assist-port: 18081
♫)本项目需要安装 Redis
安装好redis后,application-dev.yml 配置好redis的密码、ip、port等。
spring:# REDIS数据库配置redis:# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1host: 127.0.0.1# [必须修改] 端口号port: 6379# [可选] 数据库 DBdatabase: 6# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接password: face2020# [可选] 超时时间timeout: 10000
(2)编译静态页面
cd wvp-GB28181-pro/web_src/ npm --registry=https://registry.npm.taobao.org install npm run build
编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在src/main/resources下出现static目录。此时打成的jar包包含了web页面,前端可以直接访问。
(3)打包项目, 生成可执行jar
cd wvp-GB28181-pro mvn package编译如果报错, 一般都是网络问题, 导致的依赖包下载失败
编译完成后在target目录下出现wvp-pro-x.x-xxxxxxxx.jar
3.编译ZLMediaKit
参考官网编译教程
windows下编译
(1)获取代码
#国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init
(2)编译器
如果你是windows用户,推荐安装vs2017或以上。
(3)下载后使用VS打开ZLMediaKit项目根文件夹,然后CMake点击全部生成即可在文件夹
release/Windows64/Debug下生成
MediaServer(4)运行
1 进入ZLMediaKit/release/windows/Debug目录 2 双击MediaServer启动 3 你也可以在cmd或powershell中启动,通过MediaServer -h了解启动参数
windows下 下载vscode2017 ,勾选C++桌面开发。
链接:https://pan.baidu.com/s/1cjJCAzXQTPHSWezN6ICtuQ 提取码:1234
下载后使用VS打开ZLMediaKit项目根文件夹,然后CMake点击全部生成即可在文件夹
release/Windows64/Debug下生成
MediaServer
4. zlm config.ini和wvp application的配置
构建好后打开
release/xx/Debug
目录,可以看到有config.ini
是zlm的配置文件:ZLMediaKit/config.ini at master · ZLMediaKit/ZLMediaKit · GitHub其中需要特别注意的有:
(1) [http] 的 port,config.ini http.port 和 wvp media.port 一样。因为 ZLMediaKit 项目也有很多 API 接口,都需要通过这个接口来访问,包括生成的播放的URL,都是这个端口,如遇到端口被你的其它服务占用,可自行配置。
(2) [rtp_proxy] 的 port,是我们上面 SIP 项目配置的 media.port
(3)config.ini配置文件的general.secret需要和wvp application的media.secret一致;
(4)zlm 的 genaral.mediaServerId 和 wvp 的 media.id一样。 wvp注册时需要判断是否一致。
配置好了就可以运行项目了。application中media就是配置zlm;
5.启动项目
(1)启动ZLM ZLM必须先启动
(2) 运行WVP
idea编译项目,生成jar包java -jar wvp-pro-*.jar或者
idea直接运行项目
(3)访问管理页面
http://你的ip:18080
比如我的部署的服务ip为192.168.1.44, server.port为18080, 那么访问地址为http://192.168.1.44:108080, 会自动跳转到登陆页,默认用户名:admin, 密码:admin
(4)如果访问失败 关掉ZLM、WV 重新启动一下 注意启动顺序
如果启动MediaServer,缺少libcrypto-1_1-x64.dll以及缺少libssl-1_1-x64.dll。那么下载这两个dll ,然后放在
release/Windows64/Debug 目录下,也就是
MediaServer同目录下。链接:https://pan.baidu.com/s/1f9LjIVx7-PbGaQb79zf0hg
提取码:1234
6.安装FFMPEG,并推流测试
ZLMediaKit推流测试
FFMPEG
7.相机向WVP项目推送视频
不同厂商的相机,比如大华、海康、宇视等都有各自平台,难以实现跨平台视频传输。GB28181解决这个问题。WVP就是基于GB28181协议开发。
如下演示大华相机向WVP推送视频,推送到WVP的视频可以被其他平台接收、播放。
(1)WVP配置文件
application.yml配置sip服务器的相关配置 。wvp项目相当于sip服务器,其他设备向本sip服务器推送数据。
sip配置可以为127.0.0.1 也可以为本机的局域网ip
(2)相机配置
图中红框,填写WVP项目配置文件中配置的内容。
SIP服务器编号对应id;SIP域对应domain;注册密码对应password。
其余内容可根据需要自行填写。
(3)此时从WVP项目前端页面便可以播放相机视频流
设备列表--通道--播放
(4)其他平台播放视频,比如VLC
VLC可以通过资源地址播放视频,修改图中的资源地址ws://192.168.1.15:8091/rtp/0614727C.flv为http://192.168.1.15:8091/rtp/0614727C.flv即可播放。
点击播放不播放问题
注意:如果第3步报错 "收流超时,请稍候重试"或点击播放没有响应 ,很大可能是因为ZLM节点有问题。拉流代理会调用ZLM播放拉流地址,故必须保证ZLM节点没有问题。
注意两点,一是wvp pro 的application-dev.yml 配置文件中的ip需要配置为内网地址,二是application-dev.yml中media.http-port和ZLMediaKit的http-port属性值需要一样,默认是一样的。
(1)vlc 或 ffplay 播放拉流地址,看能否正常播放。 拉流地址前后不能有空格。尽量部署最新版本wvp pro,旧版本存在一些bug,在不断完善。
(2)如下 wvp pro 的application-dev.yml 配置文件中的ip地址需要为内网ip地址。
(3)节点是否配置正确
web页面 节点管理 -- 编辑。
节点就是配置zlm播放相关的一些项。
下面的IP、HOOK IP可以为127.0.0.1。但HTTP端口需要和application配置的http-port一样。 application-dev.yml中media.http-port和ZLMediaKit配置文件config.ini的http-port属性值必须相同。参考第三小节。
SDP IP、流IP必须为公网IP或内网IP,不能是127.0.0.1。docker-compose 就是配置.env文件的SIP_IP以及STREAM_HOST为服务器外网IP地址即可。
如果port不一样,需要添加节点。如下,测试通过就添加成功。
下面是docker-compose设置节点。通过.env文件查看port,ip设置为127.0.0.1即可。
注意:
如果部署wvp pro 主机修改了ip, 需要重新编辑ZLM节点。否则播放无响应。
8.安卓手机模拟支持GB28181协议的设备推流到平台
(1)下载GB28281前端采集模拟软件 GbtDevice
官网: 行业音视频解决方案专家 - 武汉视跃科技有限公司 官网查找 GBT28181音视频前端设备软件
此程序的安卓开发参考文档:用android实现GB28181的视音频前端设备_wangjie_jack的专栏-CSDN博客_gb28181 安卓
(2)安卓手机安装GbtDevice后,填写WVP配置文件对应项
国标服务器IP对应WVP项目部署在的电脑IP;服务器通信端口对应 配置文件中sip.port;服务器ID对应配置文件中sip.id;用户ID唯一标识,任意;用户密码对应sip.password。
(3)点击注册 然后点击开始录像
此时在WVP前端页面上,可以通过设备列表---通道--播放 查看上传的视频流。
如果此时通道页没有数据,可以在设备列表页,点击刷新重新连接设备。
如果报错 "收流超时,请稍候重试",请参考第6小节解决办法。
9.wvp级联到其他gb28181平台
(1)配置上级级联平台
国际级联--添加,设置上级支持gb28181协议的平台的sip配置信息。
(2)设备推流或者拉流下级wvp项目的视频流
本wvp项目可以接受设备推流,可以接受另外的wvp项目推流。
推流走Gb28181协议的视频流,连接列表显示在设备列表,比如本wvp项目从下级wvp项目拉流、GbtDevice上传流,;如果相机推数据、或者rtmp推流等到本wvp,显示在推流列表;如果从其他视频流拉流,显示在拉流代理。
其他设备推流上来,相当于生成了一个视频流通道。
(3)通道和级联平台关联
国际级联---选择通道,将平台和视频通道关联,此时视频便会推数据到上级级联平台上。
10.拉流代理
(1)填写拉流地址,可以是rtmp等流媒体。主要是拉流地址、应用名、流ID,其余参数默认即可
(2)点击播放即可播放
11.离线docker部署WVP
(0)安装docker 01 docker概述_fang.lovest.yang的博客-CSDN博客
(1)互联网拉取wvp
能够访问互联网的docker宿主机,从docker hub拉取wvp;或者如果已经下载了wvp项目的docker 直接导出wvp的tar包。如果已经有了wvp的tar包,可以直接看第3步。
docker pull 648540858/wvp_prodocker run --env WVP_IP="你的IP" -it -p 18080:18080 -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -p 80:80 -p 5060:5060 -p 5060:5060/udp 648540858/wvp_pro
(2)互联网宿主机导出wvp项目
使用镜像id导出。会直接保存在当前宿主机的当前目录下。
docker save 0fdf2b4c26d3 > hangge_server.tar
ps:如下命令将宿主机文件复制到docker指定目录下 如果参数交换位置,就实现了从docker里面向docker宿主机cp文件。【application.yml中sip的id 、password会读取环境变量值WVP_ID WVP_PWD,如果没有设置,会默认取值。环境变量值可以通过启动命令指定 --env key=value或-e key=value】
docker cp /home/toy/wvp/application.yml c3b:/opt/wvp/config/application.yml
(3)离线宿主机的docker导入wvp
docker load < wvp.tar
wvp的tar包百度云链接:https://pan.baidu.com/s/1DNlDoZRn4UM5EjB2_e7ztg 提取码:1234
ps. Centos7启动docker
systemctl start docker
(4)新建并进入docker容器
docker run --env WVP_IP="你的IP" -it -p 18080:18080 -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp -p 80:80 -p 5060:5060 -p 5060:5060/udp 648540858/wvp_pro
使用的端口
端口 描述 类型 80 zlm的http端口 tcp 554 zlm的rtsp端口,非必须 tcp&udp 1935 zlm的rtmp端口,非必须 tcp 5060 28181sip信令端口 tcp&udp 6379 redis端口,非必须 tcp 18080 wvp的http端口 tcp 18081 录像管理服务端口,非必须 tcp 30000-30500 zlm接收视频推流端口 tcp&udp ps:
进入docker容器
docker exec -it 43f /bin/bash
修改配置文件:如果docker里面没有vi软件,可以linux下vi修改,然后docker cp复制进docker容器,然后重启容器即可。
12.遇见问题
部署后,web页面无法访问
(1)查看指定端口是否开启
- lsof -i:18082 或者netstat -antp | grep 18082 发现开启
- 其他电脑远程访问测试端口是否可通
1)windows上一般用telnet如telnet ip port2)linux上可以用telnet,跟windows一样 telnet ip port3)也可以用wget:如:wget ip:port4)ssh:如ssh -v -p port username@ip -v代表打开调试模式,username可随意指定
(2)本机发现端口开启,但是远程访问端口不通。为什么?
可以试下是否使用localhost可以访问,是的话,如果是部署在阿里云等云服务器上,一般是因为其本身的安全策略引起,需要登录云服务器管理页面,开启此接口。
虚拟机安装wvp-pro,报如下三种错
(1)Resource temporarily unavailable (2)Error starting userland proxy:. (3)iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT ...
解决:虚拟机分配内存1G,太小。修改为3G就可以解决问题。网上的其他解决方案,比如重建docker0网络恢复等无效。
WVPPro+ZLMediaKit+大华相机推流+安卓模拟GB28181设备推流相关推荐
- 1.8安装大华相机SDK及测试
不同工业相机的sdk不同,可以到相应的官网下载,我使用的是大华相机 下载SDK: 官方下载地址:http://download.huaraytech.com/pub/sdk/ 我使用的是2.2.5的L ...
- 使用大华NetSDK对接大华相机
使用大华NetSDK对接相机 一. 下载大华NetSDK support 根据自己的需要下载对应版本的sdk.这边我们就以Win32版本作为开发使用. 下载的文件解压后,内部文件如下图所示: 开发使用 ...
- C#调用大华相机SDK获取图片,转换成VisionPro的Icogimage格式
文章讲的是C#调用大华相机SDK,通过回调事件获取图片并转换成visionpro的Icogimage格式,文章底部会分享例程.在调用SDK之前,需要先安装大华的相机软件到C盘,不安装到C盘会显示依赖项 ...
- 大华相机IP网段更新配置
大华相机在出厂后一般都会对应一个IP,如192.169.1.XX.实际项目中,为了将相机放到与wifi相同的频段,一般需要更改相机的IP和网关,使之与wifi处于相同频段,那么就可以在wifi覆盖的所 ...
- 大华相机接入web页面实现人脸识别
先看下效果,中间主视频流就是大华相机(视频编码H.264),海康相机(视屏编码H.265) 前端接入视屏流代码 <!--视频流--><div id="col2"& ...
- LiveVISGAT1400视图库服务-支持海康大华华为宇视天地伟业等设备视图库接入使用说明
LiveVISGAT1400视图库服务-支持海康大华华为宇视天地伟业等设备视图库接入使用说明 LiveVIS GAT1400视图库服务安装使用说明 1.服务说明 1.1.安装包说明 1.2.视图库服务 ...
- LiveGBS流媒体平台GB/T28181常见问题-海康大华宇视监控摄像机NVR硬件设备注册不上来如何排查?
LiveGBS中海康大华宇视监控摄像机NVR硬件设备注册不上来如何排查 1.网页打开后, 看不到设备注册上来 2.检查方式 2.1.检查设备注册信息 2.2.检查服务器防火墙 3.尝试配置免密接入 3 ...
- 杭州大华相机 rtsp 流格式
杭州大华(Dahua)相机的 RTSP(Real-Time Streaming Protocol)流格式一般遵循以下结构: rtsp://[username]:[password]@[camera_i ...
- Unity调用大华相机SDK采集图像及基本功能设定
unity平台对视频播放不是很友好,而大华的SDK只有c#版本的并没有专门为unity做出来SDK,最开始尝试过使用SDK里面的方式获取YUV格式的视频流,再讲YUV格式的视频流转换为unity可以播 ...
- 海康大华相机rtsp
海康: rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 说明: username: 用户名 ...
最新文章
- Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(完)...
- Python3.5 学习十二 数据库介绍
- 强化学习到底是什么,它如何运作?
- SQL查询前10条记录(SqlServer/mysql/oracle)[语法分析]
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- 找出那个数字出现3次的数字
- android java thread_Android中断并重启一个Thread线程的简单方法
- 自动驾驶车辆转向控制(通过支持转角控制的EPS实现角速度控制)
- 【codevs1246】丑数,STL与取模大质数的好处
- 史上速度最快!DNS 公共服务 1.1.1.1 正式发布
- 电脑维修之——笔记本电脑将光驱替换为硬盘
- 桥接、交换机、路由器、网桥、网关
- 程序化交易高手的交易心得 分享~
- proc文件系统介绍
- idou老师教你学Istio: 如何用Istio实现K8S Egress流量管理
- ArrayList 重拳出击,把 LinkedList 干翻在地
- java中英文汉语混合排序_Java编程实现中英混合字符串数组按首字母排序的方法...
- 牛客网SQL大厂面试真题(二)
- 微信小程序版狼人杀+服务端系列(1)
- PYthon 素数,质数的密码