WVP-GB28181-PRO常见问题收集及解答

编译教程

GB28181服务器保姆级编译教程

依赖无法下载或者下载很慢

依赖包在国外网站,无法下载是因为您的网络问题,可尝试先使用下载工具进行下载,然后通过FTP/SFTP等工具上传至服务器

播放提示收流超时

出现这个错误提示,一般都是由于WVP和ZLM的网络不通,主要检测双方的配置是否对应,是否可以互相访问到

1
2
wvp配置文件路径:/home/wvp-GB28181-pro/target/application.yml
zlm配置文件路径:/home/ZLMediaKit/release/linux/Release/config.ini

wvp配置图文详解

请确认application.yml中的zlm项中是否有如图几个参数,如果没有,请自行添加

id对应config.ini中的general项的mediaServerId,两者需要完全一致,不能使用中文

如果内网部署,请将ip,stream-ip,sdp-ip,hook-ip均填写为内网ip,内网ip可通过 ifconfig 命令查看

如果公网部署,请将ip和hook-ip填写为内网ip,stream-ip和sdp-ip填写为公网ip,公网ip可通过 curl ip.sb 查看

secret对应id对应config.ini中的api项的secret,两者需要完全一致,不能使用中文

http-port对应id对应config.ini中的http项的port,两者需要完全一致,默认为80

zlm配置图文详解

公网部署时,http项中的allow_ip_range留空,否则会导致流媒体无法访问

检查hook项中的链接是否为内网ip的链接,如为公网请修改(编译安装zlm后,hook默认为空,编译安装wvp后会自动配置,配置后再进行检查)

点播流程详解

以下为WVP-PRO点播流程。点播成功前的任何一个环节出现问题都可能出现点播超时,这也是排查点播超时的依据。

注册流程描述

  1. 用户从网页或调用接口发起点播请求;
  2. WVP-PRO向摄像机发送Invite消息,消息头域中携带 Subject字段,表明点播的视频源ID、发送方媒体流序列号、ZLMediaKit接收流使用的IP、端口号、 接收端媒体流序列号等参数,SDP消息体中 s字段为“Play”代表实时点播,y字段描述SSRC值,f字段描述媒体参数。
  3. 摄像机向WVP-PRO回复200OK,消息体中描述了媒体流发送者发送媒体流的IP、端口、媒体格式、SSRC字段等内容。
  4. WVP-PRO向设备回复Ack, 会话建立成功。
  5. 设备向ZLMediaKit发送实时流。
  6. ZLMediaKit向WVP-PRO发送流改变事件。
  7. WVP-PRO向WEB用户回复播放地址。
  8. ZLMediaKit向WVP发送流无人观看事件。
  9. WVP-PRO向设备回复Bye, 结束会话。
  10. 设备回复200OK,会话结束成功。

开启点播

开启点播后,可以提取流媒体固定地址,集成到小程序、网页、APP等

1
2
3
4
vim /home/wvp-GB28181-pro/target/application.yml
修改media.rtp.enable为true
修改user-settings.auto-apply-play为true
修改user-settings.stream-on-demand为false

绑定域名并配置https

绑定域名

以阿里云为例,创建A记录,主机记录填写需要绑定的二级域名,记录值填写为服务器公网ip

下载SSL证书

以阿里云为例,创建证书并验证后,等待CA审批后点击下载,选择“其他”

下载后解压,可以得到两个文件,XXX.key和XXX.pem,可通过FTP/SFTP等方式上传至服务器/home目录

zlm配置SSL

  1. 合并为zlmediakit支持的证书类型
    1
    cat XXX.key XXX.pem > zlm.pem
  2. 加载证书
    1
    2
    3
    4
    cd /home/ZLMediaKit/release/linux/Release
    cp /home/zlm.pem ./
    #启动进程,
    ./MediaServer -s zlm.pem
    默认https端口为443,如需修改,可编辑config.ini中http项的sslport

wvp配置SSL

1
2
3
4
5
6
7
8
9
10
cd /home/wvp-GB28181-pro/target
mkdir resource
cp /home/XXX.key resource/
cp /home/XXX.pem resource/
vim application.yml
修改server.ssh.enabled为true
修改certificate为 /home/wvp-GB28181-pro/target/resource/XXX.pem
修改certificate-private-key为 /home/wvp-GB28181-pro/target/resource/XXX.key
修改media.stream-ip为绑定的域名
如ZLM的ssl端口修改了,请将media. http-ssl-port同步修改



重启ZLM和WVP后,即可实现域名https访问,流媒体链接亦可域名https播放

画面显示花屏

监控画面经常花屏,可以把流传输模式改成“TCP被动模式”,同时,在弱网环境下,配置正常,偶现收流超时,可更换为“TCP被动模式”后再次尝试播放

点播端口分配异常

首先请检查wvp和zlm的配置是否一致,具体可查看播放提示收流超时,然后请确保防火墙的8000tcp端口已经打开,包括服务器系统的防火墙和云服务商的安全策略中的入站规则

前后端分离部署

前端编译后的文件在src/main/resources/static中,将此目录下的文件部署。 前后端分离部署最大的问题是跨域的解决,当前版本使用JWT生成的TOKEN作为认证凭据, 部署前端后需要在wvp中配置前端访问的地址以完成跨域流程。

配置前端服务器

假如你的服务有公网域名为xxx.com,公网IP为11.11.11.11, 那么你可以在wvp中这样配置:

1
2
3
4
5
user-settings:
# 跨域配置,配置你访问前端页面的地址即可, 可以配置多个
allowed-origins:
- http://xxx.com:8008
- http://11.11.11.11:8008

配置不是必须的,你使用哪个ip/域名访问就配置哪个即可。修改配置后重启wvp以使配置生效。
src/main/resources/static/static/js/config.js下配置服务器的地址,也就是wvp服务的地址

1
window.baseUrl = "http://xxx.com:18080"

这里的地址是需要客户端电脑能访问到的,因为请求是客户端电脑发起,与代理不同   

问题持续收集中,同时欢迎在评论区留言提供相关素材