wvp和zlm交互
2022-09-29 13:58:36 2 举报
AI智能生成
wvp和zlm交互
作者其他创作
大纲/内容
zlm需要提供的hook事件
on_http_access 访问http文件服务器上hls之外的文件时触发
on_play 播放器鉴权事件,rtsp/rtmp/http-flv/ws-flv/hls的播放都将触发此鉴权事件
on_publish rtsp/rtmp/rtp推流鉴权事件
on_record_mp4 录制mp4完成后通知事件;此事件对回复不敏感
on_rtsp_realm 该rtsp流是否开启rtsp专用方式的鉴权事件,开启后才会触发on_rtsp_auth事件
on_rtsp_auth rtsp专用的鉴权事件,先触发on_rtsp_realm事件然后才会触发on_rtsp_auth事件
on_shell_login shell登录鉴权,ZLMediaKit提供简单的telnet调试方式
on_stream_changed rtsp/rtmp流注册或注销时触发此事件;此事件对回复不敏感
on_stream_none_reader 流无人观看时事件,用户可以通过此事件选择是否关闭无人看的流
on_stream_not_found 流未找到事件,用户可以在此事件触发时,立即去拉流,这样可以实现按需拉流
on_server_started 服务器启动事件,可以用于监听服务器崩溃重启
on_server_keepalive 服务保活, zlm定时上报时间,上报间隔可配置,默认10s上报一次
WVP sip交互
注册
保活
获取目录树
实时观看
注意:主要依赖zlm的收发ps-rtp流能力
发送invite时,用http接口在zlm上创建一个
收流的UDP/TCP服务通道提供给摄像头
收流的UDP/TCP服务通道提供给摄像头
结束观看,发送sip bye时,
用http接口将zlm创建的UDP/TCP通道删除
用http接口将zlm创建的UDP/TCP通道删除
获取录像列表
回看
中心录像(云储存)
需要依赖ffmpeg,将录像文件下载并转推成rtp流
一般是一段时间的观看,可能取到多个录像文件,需要连续转推
考虑如何支持倍速,单个录像文件内拖拽播放,ffmpeg的事情
设备录像
正常通过sip向设备获取
订阅
设备目录操作订阅
设备告警订阅
zlm需要提供的http接口
获取服务器配置 /index/api/getServerConfig
设置服务器配置 /index/api/setServerConfig
重启服务器,只有Daemon方式才能重启 /index/api/restartServer
获取流列表,可选筛选参数 /index/api/getMediaList
兼容 判断直播流是否在线
兼容 获取流相关信息
关闭流(目前所有类型的流都支持关闭) /index/api/close_streams
兼容 关闭ffmpeg拉流代理
兼容 关闭rtsp/rtmp主动推流
获取所有TcpSession列表(获取所有tcp客户端相关信息) /index/api/getAllSession
断开tcp连接,比如说可以断开rtsp、rtmp播放器等 /index/api/kick_session
断开tcp连接,比如说可以断开rtsp、rtmp播放器等 /index/api/kick_sessions
动态添加rtsp/rtmp/hls拉流代理(只支持H264/H265/aac/G711负载) /index/api/addStreamProxy
关闭拉流代理 /index/api/delStreamProxy(流注册成功后,也可以使用close_streams接口替代)
通过fork FFmpeg进程的方式拉流代理,支持任意协议 /index/api/addFFmpegSource
关闭ffmpeg拉流代理 /index/api/delFFmpegSource(流注册成功后,也可以使用close_streams接口替代)
判断直播流是否在线 /index/api/isMediaOnline(已过期,请使用getMediaList接口替代)
获取流相关信息 /index/api/getMediaInfo(已过期,请使用getMediaList接口替代)
获取rtp代理时的某路ssrc rtp信息 /index/api/getRtpInfo
搜索文件系统,获取流对应的录像文件列表或日期文件夹列表 /index/api/getMp4RecordFile
开始录制hls或MP4 /index/api/startRecord
停止录制流 /index/api/stopRecord
获取流录制状态 /index/api/isRecording
获取截图或生成实时截图并返回 /index/api/getSnap
创建GB28181 RTP接收端口,如果该端口接收数据超时,则会自动被回收(不用调用closeRtpServer接口) /index/api/openRtpServer
TCP 传输
UDP 传输
关闭GB28181 RTP接收端口 /index/api/closeRtpServer
获取openRtpServer接口创建的所有RTP服务器 /index/api/listRtpServer
作为GB28181客户端,启动ps-rtp推流,支持rtp/udp方式;该接口支持rtsp/rtmp等协议转ps-rtp推流 /index/api/startSendRtp
停止GB28181 ps-rtp推流 /index/api/stopSendRtp
获取主要对象个数统计,主要用于分析内存性能 /index/api/getStatistic
添加rtsp/rtmp主动推流(把本服务器的直播流推送到其他服务器去) /index/api/addStreamPusherProxy
关闭推流 /index/api/delStreamPusherProxy(可以使用close_streams接口关闭源直播流也可以停止推流)
zlm配置文件(核心配置说明)-
hook时媒体服务唯一标识,
用作负载均衡调度场景
用作负载均衡调度场景
mediaServerId 服务器唯一id,用于触发hook时区别是哪台服务器
zlm回调配置
假设wvp的ip:port为 192.168.1.1:9090
[hook]
enable=1
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
timeoutSec=10
# hook事件配置列表
on_flow_report=https://192.168.1.1:9090/index/hook/on_flow_report
on_http_access=https://192.168.1.1:9090/index/hook/on_http_access
on_play=https://192.168.1.1:9090/index/hook/on_play
on_publish=https://192.168.1.1:9090/index/hook/on_publish
on_record_mp4=https://192.168.1.1:9090/index/hook/on_record_mp4
on_rtsp_auth=https://192.168.1.1:9090/index/hook/on_rtsp_auth
on_rtsp_realm=https://192.168.1.1:9090/index/hook/on_rtsp_realm
on_shell_login=https://192.168.1.1:9090/index/hook/on_shell_login
on_stream_changed=https://192.168.1.1:9090/index/hook/on_stream_changed
on_stream_none_reader=https://192.168.1.1:9090/index/hook/on_stream_none_reader
on_stream_not_found=https://192.168.1.1:9090/index/hook/on_stream_not_found
on_server_started=https://192.168.1.1:9090/index/hook/on_server_started
on_server_keepalive=https://192.168.1.1:9090/index/hook/on_server_keepalive
enable=1
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
timeoutSec=10
# hook事件配置列表
on_flow_report=https://192.168.1.1:9090/index/hook/on_flow_report
on_http_access=https://192.168.1.1:9090/index/hook/on_http_access
on_play=https://192.168.1.1:9090/index/hook/on_play
on_publish=https://192.168.1.1:9090/index/hook/on_publish
on_record_mp4=https://192.168.1.1:9090/index/hook/on_record_mp4
on_rtsp_auth=https://192.168.1.1:9090/index/hook/on_rtsp_auth
on_rtsp_realm=https://192.168.1.1:9090/index/hook/on_rtsp_realm
on_shell_login=https://192.168.1.1:9090/index/hook/on_shell_login
on_stream_changed=https://192.168.1.1:9090/index/hook/on_stream_changed
on_stream_none_reader=https://192.168.1.1:9090/index/hook/on_stream_none_reader
on_stream_not_found=https://192.168.1.1:9090/index/hook/on_stream_not_found
on_server_started=https://192.168.1.1:9090/index/hook/on_server_started
on_server_keepalive=https://192.168.1.1:9090/index/hook/on_server_keepalive
无人观看,按需拉流
ps:关联到转推,如果存在转推GB,那就是一直拉流
初次拉流,不涉及到转推,无人观看,超过设置的超时时间,则关断流
无人观看超时配置 streamNoneReaderDelayMS=20000
rtp核心配置
rtp
[rtp]
#音频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400
#加大该值会明显增加直播延时
audioMtuSize=600
#视频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400
videoMtuSize=1400
#rtp包最大长度限制,单位KB,主要用于识别TCP上下文破坏时,获取到错误的rtp
rtpMaxSize=10
#音频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400
#加大该值会明显增加直播延时
audioMtuSize=600
#视频mtu大小,该参数限制rtp最大字节数,推荐不要超过1400
videoMtuSize=1400
#rtp包最大长度限制,单位KB,主要用于识别TCP上下文破坏时,获取到错误的rtp
rtpMaxSize=10
rtp_proxy
[rtp_proxy]
#导出调试数据(包括rtp/ps/h264)至该目录,置空则关闭数据导出
dumpDir=
#udp和tcp代理服务器,支持rtp(必须是ts或ps类型)代理
port=10000
#rtp超时时间,单位秒
timeoutSec=15
#导出调试数据(包括rtp/ps/h264)至该目录,置空则关闭数据导出
dumpDir=
#udp和tcp代理服务器,支持rtp(必须是ts或ps类型)代理
port=10000
#rtp超时时间,单位秒
timeoutSec=15

收藏
0 条评论
下一页