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修改参数
- 进入容器 docker exec -it zlm /bin/bash
- vim …/conf/config.ini
- 记录一下 api.secret,general.mediaServerId,当然也可以自己随便写
- 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://127.0.0.1:18081/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的,
5. wq保存退出,然后重启zlm
wvp配置文件修改
- server.port视实际情况修改,和zlm统一
- redis和mysql按实际情况修改,源码中存在mysql文件,直接新建数据库即可
- sip.ip修改为本机ip,sip.port修改为国标监听的端口,注意和server.port区分
- 重点:media.id修改为zlm的general.mediaServerId,media.secret修改为api.secret 上面说记录一下的那个。其余media按官方文档修改即可,我这边端口范围改成了30000-30500,也按实际情况修改,因为我的zlm是docker部署,此时配置的端口范围也要在docker run zlm的时候相应暴露出来,因为设备是往这些端口上推流的
- user-settings.allowed-origins修改为前端地址,这些在wvp官方文档都有说明,就不细说了
抓包
我刚开始是有个地址配置错误了,查看日志收不到设备的视频流,虽然官网也有说明,但是也在此也记录一下
官网是说按网卡抓包,我是用的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流改变事件,所以就会收流超时