zlmediakit使用zlmediakit/zlmediakit:master镜像
wvp_pro使用648540858/wvp_pro,可参照https://github.com/648540858/wvp-GB28181-pro
wvp_pro官方https://doc.wvp-pro.cn/#/
刚开始我找了个docker镜像运行,后来播放页面一直加载,最后就用了源码运行

我们从wvp-pro的官网看到wvp-pro和zlmedialKit流程
在这里插入图片描述
wvp与zlm是api通信,zlm与wvp是hook通信

zlmediakit启动命令
docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 30000-30500:30000-30500 -p 30000-30500:30000-30500/udp --name zlm zlmediakit/zlmediakit:master

zlmediakit修改参数

  1. 进入容器 docker exec -it zlm /bin/bash
  2. vim …/conf/config.ini
  3. 记录一下 api.secret,general.mediaServerId,当然也可以自己随便写
  4. hook.enable改成1,因为zlm与wvp是hook方式通信
alive_interval=10.0
enable=1
on_flow_report=
on_http_access=
on_play=http://192.168.1.85:8081/index/hook/on_play
on_publish=http://192.168.1.85:8081/index/hook/on_publish
on_record_mp4=http://192.168.1.78:18082/api/record/on_record_mp4
on_record_ts=
on_rtp_server_timeout=http://192.168.1.85:8081/index/hook/on_rtp_server_timeout
on_rtsp_auth=
on_rtsp_realm=
on_send_rtp_stopped=http://192.168.1.85:8081/index/hook/on_send_rtp_stopped
on_server_exited=http://192.168.1.85:8081/index/hook/on_server_exited
on_server_keepalive=http://192.168.1.85:8081/index/hook/on_server_keepalive
on_server_started=http://192.168.1.85:8081/index/hook/on_server_started
on_shell_login=
on_stream_changed=http://192.168.1.85:8081/index/hook/on_stream_changed
on_stream_none_reader=http://192.168.1.85:8081/index/hook/on_stream_none_reader
on_stream_not_found=http://192.168.1.85:8081/index/hook/on_stream_not_found
retry=1
retry_delay=3.0
stream_changed_schemas=rtsp/rtmp/fmp4/ts/hls/hls.fmp4
timeoutSec=20

对应修改相关的ip的端口,ip和端口对应的都是wvp的,
on_record_mp4配置的是 wvp-pro-assist的端口,需要单独部署,如果需要云录像就要部署
在这里插入图片描述
5. wq保存退出,然后重启zlm

wvp配置文件修改

  1. server.port视实际情况修改,和zlm统一
  2. redis和mysql按实际情况修改,源码中存在mysql文件,直接新建数据库即可
  3. sip.ip修改为本机ip,sip.port修改为国标监听的端口,注意和server.port区分
  4. 重点:media.id修改为zlm的general.mediaServerId,media.secret修改为api.secret 上面说记录一下的那个。其余media按官方文档修改即可,我这边端口范围改成了30000-30500,也按实际情况修改,因为我的zlm是docker部署,此时配置的端口范围也要在docker run zlm的时候相应暴露出来,因为设备是往这些端口上推流的
  5. user-settings.allowed-origins修改为前端地址,这些在wvp官方文档都有说明,就不细说了
  6. media.record-assist-port是配置的assist的端口,云端录像使用,用的话就配置

抓包

我刚开始是有个地址配置错误了,查看日志收不到设备的视频流,虽然官网也有说明,但是也在此也记录一下
官网是说按网卡抓包,我是用的ip地址,不过也都一样,抓包方法就不说了
抓包是在web页面点击实施预览无画面的过程,点击之前开始抓包,没画面过一会就关闭抓包就好了

我们打开抓包的文件
在这里插入图片描述
我这个是按网卡抓包的,就比较多东西,我们搜索sip or rtp

我们就再次结合这张图来说一下具体流程
在这里插入图片描述
192.168.1.197是设备的ip
192.168.1.78是服务器,5060端口是wvp的端口(sip.port)
抓包数据中No.401,是wvp-pro下发invite给设备,这里面就包含了设备需要往哪里推流
在这里插入图片描述
我的这个ip就配置错误了,应该是192.168.1.78,就导致一直没收到流,如果是外网的情况下,那这里应该就是外网的ip了
抓包中的rtp数据,就是视频流了,是可以导出在vlc播放的,双击一个rtp数据弹出具体信息
在这里插入图片描述
在这里插入图片描述
这样就可以导出了,就按照默认格式导出即可,拖到vlc里面是可以播放的,就证明设备的流是没问题的,因为wvp配置了一段时间无人播放就会关闭推流,所以当推流地址错误时,zlm收不到流,zlm也就没法通知到wvp流改变事件,所以就会收流超时

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐