一、wvp
1.docker部署
这里WVP_IP、相关端口号根据情况修改,MEDIA_SDP_IP、MEDIA_STREAM_IP为zlmediakit的IP
docker run --env WVP_IP=172.16.180.134 -e MEDIA_SDP_IP=172.16.10.39 -e MEDIA_STREAM_IP=172.16.10.39 -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 --name wvp wangwuli/wvp:2.7.1-2024110702
http://127.0.0.1:8888/lab?token=c85804158d3315f1869fed7e7eb073e9d8ed0fac65618468
2.相关配置文件
docker exec -it wvp /bin/bash
vim config/application.yml #进入容器修改配置文件
docker cp wvp:/opt/wvp/config tmp/ #或者先复制到本地,修改后在复制回去
# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18080
# 作为28181服务器的配置
sip:
# [必须修改] 本机的IP,对应你的网卡,监听什么ip就是使用什么网卡,
# 如果要监听多张网卡,可以使用逗号分隔多个IP, 例如: 192.168.1.4,10.0.0.4
# 如果不明白,就使用0.0.0.0,大部分情况都是可以的
# 请不要使用127.0.0.1,任何包括localhost在内的域名都是不可以的。
ip: ${WVP_HOST:0.0.0.0}
# [可选] 28181服务监听的端口
port: ${WVP_PORT:5060}
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
# 后两位为行业编码,定义参照附录D.3
# 3701020049标识山东济南历下区 信息行业接入
# [可选]
domain: ${WVP_DOMAIN:4401020049}
# [可选]
id: ${WVP_ID:44010200492000000001}
# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
password: ${WVP_PWD:admin123}
#zlm 默认服务器配置
media:
# [必须修改] zlm服务器唯一id,用于触发hook时区别是哪台服务器,general.mediaServerId
id: 1tT2oWdyDhLAzx7Q20241107
# [必须修改] zlm服务器的内网IP
ip: ${ZLM_HOST:127.0.0.1}
# [必须修改] zlm服务器的http.port
http-port: ${ZLM_PORT:80}
# [可选] zlm服务器的hook.admin_params=secret
secret: OHvo86N9Ww6V8mHPWMisxNgkb8dvqAV420241107
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输,
port-range: 20000,20500 # 端口范围
# [可选] 国标级联在此范围内选择端口发送媒体流,
send-port-range: 20000,20500 # 端口范围
# 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
record-assist-port: 18081
sdp-ip: ${MEDIA_SDP_IP}
stream-ip: ${MEDIA_STREAM_IP}
# [根据业务需求配置]
user-settings:
# 推流直播是否录制
record-push-live: false
record-sip: false
auto-apply-play: true
上面是原配置文件,下面是一些需要修改的地方,其他如端口号,使用默认值即可,如需修改要保持wvp与zlm一致
media:
id: zlm1 #与ZLMediaKit配置文件中general.mediaServerId保持一致
ip: ${ZLM_HOST:172.16.10.39} #与ZLMediaKit内网IP保持一致
# [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip
hook-ip: 172.16.180.134 #wvp本机IP,原配置文件没有该属性,默认是127.0.0.1,我是wvp与zlm配置在不同服务器,所以需要加上
http-port: ${ZLM_PORT:8080} #与ZLMediaKit访问端口保持一致
secret: icetc #与ZLMediaKit配置文件中api.secret保持一致
sdp-ip: ${MEDIA_SDP_IP} #wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip,默认使用 media.ip
stream-ip: ${MEDIA_STREAM_IP} #返回流地址时的ip,默认使用 media.ip
二、ZLMediaKit
1.docker部署
docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name zlmediakit zlmediakit/zlmediakit:master
2.相关配置文件
docker exec -it zlmediakit/bin/bash
vim ../conf/config.ini #进入容器修改配置文件
修改这些,其他使用默认值
[api]
secret=icetc
[general]
mediaServerId=zlm1
三、测试
1.zlm前端展示
2.摄像头配置
3.wvp前端展示
4.wvp点播流程
注册流程描述
- 用户从网页或调用接口发起点播请求;
- WVP-PRO向摄像机发送Invite消息,消息头域中携带 Subject字段,表明点播的视频源ID、发送方媒体流序列号、ZLMediaKit接收流使用的IP、端口号、 接收端媒体流序列号等参数,SDP消息体中 s字段为“Play”代表实时点播,y字段描述SSRC值,f字段描述媒体参数。
- 摄像机向WVP-PRO回复200OK,消息体中描述了媒体流发送者发送媒体流的IP、端口、媒体格式、SSRC字段等内容。
- WVP-PRO向设备回复Ack, 会话建立成功。
- 设备向ZLMediaKit发送实时流。
- ZLMediaKit向WVP-PRO发送流改变事件。
- WVP-PRO向WEB用户回复播放地址。
- ZLMediaKit向WVP发送流无人观看事件。
- WVP-PRO向设备回复Bye, 结束会话。
- 设备回复200OK,会话结束成功。