增加按需取流接口
This commit is contained in:
parent
800a2de30f
commit
ed091501d7
@ -0,0 +1,80 @@
|
||||
package org.dromara.sis.controller.zkmedia;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.sis.sdk.zkmedia.MediaServerUtils;
|
||||
import org.dromara.sis.sdk.zkmedia.model.*;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/index/hook")
|
||||
public class ZkMediaHookController {
|
||||
|
||||
/**
|
||||
* 服务器定时上报时间,上报间隔可配置,默认10s上报一次
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onServerKeepalive(@RequestBody OnServerKeepaliveHookParam param) {
|
||||
log.debug("ZLM心跳上报,params: {}", param);
|
||||
return HookResult.SUCCESS();
|
||||
}
|
||||
|
||||
/**
|
||||
* rtsp/rtmp/rtp 推流鉴权事件。
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_publish", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onPublish(@RequestBody OnPushParam param) {
|
||||
log.info("rtsp/rtmp/rtp 推流鉴权,params: {}", param);
|
||||
return HookResult.SUCCESS();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 播放器鉴权事件,rtsp/rtmp/http-flv/ws-flv/hls的播放都将触发此鉴权事件。
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onPlay(@RequestBody OnPlayHookParam param) {
|
||||
Map<String, String> paramMap = MediaServerUtils.urlParamToMap(param.getParams());
|
||||
// 对于播放流进行鉴权
|
||||
log.info("播放器鉴权事件,params={}", JSONObject.toJSONString(param));
|
||||
return HookResult.SUCCESS();
|
||||
}
|
||||
|
||||
/**
|
||||
* rtsp/rtmp流注册或注销时触发此事件;此事件对回复不敏感。
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onStreamChanged(@RequestBody OnStreamChangedHookParam param) {
|
||||
log.info("[ZLM HOOK] 流注销, {}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
|
||||
return HookResult.SUCCESS();
|
||||
}
|
||||
|
||||
/**
|
||||
* 流无人观看时事件,用户可以通过此事件选择是否关闭无人看的流。
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onStreamNoneReader(@RequestBody OnStreamNoneReaderHookParam param) {
|
||||
log.info("[ZLM HOOK]流无人观看:{}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
|
||||
// TODO 关闭无人观看的流
|
||||
return HookResult.SUCCESS().setClose(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 流未找到事件,用户可以在此事件触发时,立即去拉流,这样可以实现按需拉流;此事件对回复不敏感。
|
||||
*/
|
||||
@ResponseBody
|
||||
@PostMapping(value = "/on_stream_not_found", produces = "application/json;charset=UTF-8")
|
||||
public HookResult onStreamNotFound(@RequestBody OnStreamNotFoundHookParam param) {
|
||||
log.info("[ZLM HOOK] 流未找到:{}->{}->{}/{}", param.getMediaServerId(), param.getSchema(), param.getApp(), param.getStream());
|
||||
return HookResult.SUCCESS();
|
||||
}
|
||||
|
||||
}
|
@ -14,8 +14,13 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ZLMediaKit流媒体服务
|
||||
*
|
||||
* @author lxj
|
||||
*/
|
||||
@Slf4j
|
||||
@Service("com.parkclouds.media.service.ZLMediaKitServiceImpl")
|
||||
@Service
|
||||
public class ZLMediaKitServiceImpl implements ZLMediaKitService {
|
||||
|
||||
@Resource
|
||||
@ -141,7 +146,7 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService {
|
||||
commonParams.put("force", 1);
|
||||
R<AddStreamProxyResp> result = HttpClientUtil.get(getRequestUrl("close_streams"), commonParams, AddStreamProxyResp.class);
|
||||
if (result != null) {
|
||||
String s =null;
|
||||
String s = null;
|
||||
if (result.getCode() == 0) {
|
||||
s = "关闭流成功";
|
||||
}
|
||||
@ -149,7 +154,7 @@ public class ZLMediaKitServiceImpl implements ZLMediaKitService {
|
||||
if (result.getCode() == -1) {
|
||||
s = "关闭流失败";
|
||||
}
|
||||
log.info("{},关闭流数量:{}",s,result.getData());
|
||||
log.info("{},关闭流数量:{}", s, result.getData());
|
||||
return s;
|
||||
}
|
||||
return null;
|
||||
|
Loading…
Reference in New Issue
Block a user