Class ZlmHookController
java.lang.Object
io.github.lunasaw.zlm.hook.controller.ZlmHookController
@RestController
@ConditionalOnProperty(value="zlm.hook-enable",
havingValue="true")
@RequestMapping("/index/hook/")
public class ZlmHookController
extends Object
- Version:
- 1.0
- Author:
- luna
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiononFlowReport
(OnFlowReportHookParam param, jakarta.servlet.http.HttpServletRequest request) 流量统计事件,播放器或推流器断开时并且耗用流量超过特定阈值时会触发此事件, 阈值通过配置文件general.flowThreshold配置;此事件对回复不敏感。onHttpAccess
(OnHttpAccessParam param, jakarta.servlet.http.HttpServletRequest request) 访问http文件服务器上hls之外的文件时触发。结果会被缓存CookieonPlay
(OnPlayHookParam param, jakarta.servlet.http.HttpServletRequest request) 播放器鉴权事件,rtsp/rtmp/http-flv/ws-flv/hls的播放都将触发此鉴权事件。onPublish
(OnPublishHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp/rtmp/rtp推流鉴权事件。onRecordMp4
(OnRecordMp4HookParam param, jakarta.servlet.http.HttpServletRequest request) onRtpServerTimeout
(OnRtpServerTimeoutHookParam param, jakarta.servlet.http.HttpServletRequest request) rtpServer收流超时 调用openRtpServer 接口,rtp server 长时间未收到数据,执行此web hook,对回复不敏感onRtspAuth
(OnRtspAuthHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp专用的鉴权事件,先触发on_rtsp_realm事件然后才会触发on_rtsp_auth事件。onRtspRealm
(OnRtspRealmHookParam param, jakarta.servlet.http.HttpServletRequest request) 该rtsp流是否开启rtsp专用方式的鉴权事件,开启后才会触发on_rtsp_auth事件。onSendRtpStopped
(OnSendRtpStoppedHookParam param, jakarta.servlet.http.HttpServletRequest request) 发送rtp(startSendRtp)被动关闭时回调onServerExited
(HookParam param, jakarta.servlet.http.HttpServletRequest request) onServerKeepalive
(OnServerKeepaliveHookParam param, jakarta.servlet.http.HttpServletRequest request) 服务器定时上报时间,上报间隔可配置,默认10s上报一次onServerStarted
(ServerNodeConfig param, jakarta.servlet.http.HttpServletRequest request) 服务器启动事件,可以用于监听服务器崩溃重启;此事件对回复不敏感。onStreamChanged
(OnStreamChangedHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp/rtmp流注册或注销时触发此事件;此事件对回复不敏感。onStreamNoneReader
(OnStreamNoneReaderHookParam param, jakarta.servlet.http.HttpServletRequest request) 流无人观看时事件,用户可以通过此事件选择是否关闭无人看的流。onStreamNotFound
(OnStreamNotFoundHookParam param, jakarta.servlet.http.HttpServletRequest request) 流未找到事件,用户可以在此事件触发时,立即去拉流,这样可以实现按需拉流;此事件对回复不敏感。
-
Constructor Details
-
ZlmHookController
public ZlmHookController()
-
-
Method Details
-
onServerKeepalive
@PostMapping(value="/on_server_keepalive", produces="application/json;charset=UTF-8") public HookResult onServerKeepalive(@RequestBody OnServerKeepaliveHookParam param, jakarta.servlet.http.HttpServletRequest request) 服务器定时上报时间,上报间隔可配置,默认10s上报一次- Parameters:
param
-- Returns:
-
onPlay
@ResponseBody @PostMapping(value="/on_play", produces="application/json;charset=UTF-8") public HookResult onPlay(@RequestBody OnPlayHookParam param, jakarta.servlet.http.HttpServletRequest request) 播放器鉴权事件,rtsp/rtmp/http-flv/ws-flv/hls的播放都将触发此鉴权事件。 -
onPublish
@ResponseBody @PostMapping(value="/on_publish", produces="application/json;charset=UTF-8") public HookResultForOnPublish onPublish(@RequestBody OnPublishHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp/rtmp/rtp推流鉴权事件。 -
onStreamChanged
@ResponseBody @PostMapping(value="/on_stream_changed", produces="application/json;charset=UTF-8") public HookResult onStreamChanged(@RequestBody OnStreamChangedHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp/rtmp流注册或注销时触发此事件;此事件对回复不敏感。 -
onStreamNoneReader
@ResponseBody @PostMapping(value="/on_stream_none_reader", produces="application/json;charset=UTF-8") public HookResultForStreamNoneReader onStreamNoneReader(@RequestBody OnStreamNoneReaderHookParam param, jakarta.servlet.http.HttpServletRequest request) 流无人观看时事件,用户可以通过此事件选择是否关闭无人看的流。流无人观看时事件,用户可以通过此事件选择是否关闭无人看的流。 一个直播流注册上线了,如果一直没人观看也会触发一次无人观看事件,触发时的协议schema是随机的,看哪种协议最晚注册(一般为hls)。 后续从有人观看转为无人观看,触发协议schema为最后一名观看者使用何种协议。 目前mp4/hls录制不当做观看人数(mp4录制可以通过配置文件mp4_as_player控制,但是rtsp/rtmp/rtp转推算观看人数,也会触发该事件。
-
onStreamNotFound
@ResponseBody @PostMapping(value="/on_stream_not_found", produces="application/json;charset=UTF-8") public HookResult onStreamNotFound(@RequestBody OnStreamNotFoundHookParam param, jakarta.servlet.http.HttpServletRequest request) 流未找到事件,用户可以在此事件触发时,立即去拉流,这样可以实现按需拉流;此事件对回复不敏感。- Returns:
- code int 错误代码,0代表允许播放 msg string 不允许播放时的错误提示
-
onServerStarted
@ResponseBody @PostMapping(value="/on_server_started", produces="application/json;charset=UTF-8") public HookResult onServerStarted(@RequestBody ServerNodeConfig param, jakarta.servlet.http.HttpServletRequest request) 服务器启动事件,可以用于监听服务器崩溃重启;此事件对回复不敏感。 -
onServerExited
@ResponseBody @PostMapping(value="/on_server_exited", produces="application/json;charset=UTF-8") public HookResult onServerExited(@RequestBody HookParam param, jakarta.servlet.http.HttpServletRequest request) -
onSendRtpStopped
@ResponseBody @PostMapping(value="/on_send_rtp_stopped", produces="application/json;charset=UTF-8") public HookResult onSendRtpStopped(@RequestBody OnSendRtpStoppedHookParam param, jakarta.servlet.http.HttpServletRequest request) 发送rtp(startSendRtp)被动关闭时回调 -
onRtpServerTimeout
@ResponseBody @PostMapping(value="/on_rtp_server_timeout", produces="application/json;charset=UTF-8") public HookResult onRtpServerTimeout(@RequestBody OnRtpServerTimeoutHookParam param, jakarta.servlet.http.HttpServletRequest request) rtpServer收流超时 调用openRtpServer 接口,rtp server 长时间未收到数据,执行此web hook,对回复不敏感 -
onHttpAccess
@ResponseBody @PostMapping(value="/on_http_access", produces="application/json;charset=UTF-8") public HookResultForOnHttpAccess onHttpAccess(@RequestBody OnHttpAccessParam param, jakarta.servlet.http.HttpServletRequest request) 访问http文件服务器上hls之外的文件时触发。结果会被缓存Cookie- Parameters:
param
-- Returns:
-
onRtspRealm
@ResponseBody @PostMapping(value="/on_rtsp_realm", produces="application/json;charset=UTF-8") public HookResultForOnRtspRealm onRtspRealm(@RequestBody OnRtspRealmHookParam param, jakarta.servlet.http.HttpServletRequest request) 该rtsp流是否开启rtsp专用方式的鉴权事件,开启后才会触发on_rtsp_auth事件。需要指出的是rtsp也支持url参数鉴权,它支持两种方式鉴权。
- Parameters:
param
-- Returns:
-
onRtspAuth
@ResponseBody @PostMapping(value="/on_rtsp_auth", produces="application/json;charset=UTF-8") public HookResultForOnRtspAuth onRtspAuth(@RequestBody OnRtspAuthHookParam param, jakarta.servlet.http.HttpServletRequest request) rtsp专用的鉴权事件,先触发on_rtsp_realm事件然后才会触发on_rtsp_auth事件。- Parameters:
param
-- Returns:
-
onFlowReport
@ResponseBody @PostMapping(value="/on_flow_report", produces="application/json;charset=UTF-8") public HookResult onFlowReport(@RequestBody OnFlowReportHookParam param, jakarta.servlet.http.HttpServletRequest request) 流量统计事件,播放器或推流器断开时并且耗用流量超过特定阈值时会触发此事件, 阈值通过配置文件general.flowThreshold配置;此事件对回复不敏感。- Parameters:
param
-- Returns:
-
onRecordMp4
@ResponseBody @PostMapping(value="/on_record_mp4", produces="application/json;charset=UTF-8") public HookResult onRecordMp4(@RequestBody OnRecordMp4HookParam param, jakarta.servlet.http.HttpServletRequest request)
-