优化拉流代理调用流程
parent
3f6ef955f5
commit
d4cdf5510b
|
@ -170,15 +170,19 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||||
callback.run(ErrorCode.ERROR100.getCode(), "保存失败", null);
|
callback.run(ErrorCode.ERROR100.getCode(), "保存失败", null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HookSubscribeForStreamChange hookSubscribeForStreamChange = HookSubscribeFactory.on_stream_changed(param.getApp(), param.getStream(), true, "rtsp", mediaInfo.getId());
|
|
||||||
hookSubscribe.addSubscribe(hookSubscribeForStreamChange, (mediaServerItem, response) -> {
|
|
||||||
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
|
|
||||||
mediaInfo, param.getApp(), param.getStream(), null, null);
|
|
||||||
callback.run(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), streamInfo);
|
|
||||||
});
|
|
||||||
if (param.isEnable()) {
|
if (param.isEnable()) {
|
||||||
String talkKey = UUID.randomUUID().toString();
|
String talkKey = UUID.randomUUID().toString();
|
||||||
String delayTalkKey = UUID.randomUUID().toString();
|
String delayTalkKey = UUID.randomUUID().toString();
|
||||||
|
HookSubscribeForStreamChange hookSubscribeForStreamChange = HookSubscribeFactory.on_stream_changed(param.getApp(), param.getStream(), true, "rtsp", mediaInfo.getId());
|
||||||
|
hookSubscribe.addSubscribe(hookSubscribeForStreamChange, (mediaServerItem, response) -> {
|
||||||
|
dynamicTask.stop(delayTalkKey);
|
||||||
|
hookSubscribe.removeSubscribe(hookSubscribeForStreamChange);
|
||||||
|
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(
|
||||||
|
mediaInfo, param.getApp(), param.getStream(), null, null);
|
||||||
|
callback.run(ErrorCode.SUCCESS.getCode(), ErrorCode.SUCCESS.getMsg(), streamInfo);
|
||||||
|
});
|
||||||
|
|
||||||
dynamicTask.startDelay(delayTalkKey, ()->{
|
dynamicTask.startDelay(delayTalkKey, ()->{
|
||||||
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(param.getApp(), param.getStream(), mediaInfo.getId(), false);
|
StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStreamWithCheck(param.getApp(), param.getStream(), mediaInfo.getId(), false);
|
||||||
if (streamInfo != null) {
|
if (streamInfo != null) {
|
||||||
|
@ -324,6 +328,9 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||||
zlmresTfulUtils.closeStreams(mediaServerItem, param.getApp(), param.getStream());
|
zlmresTfulUtils.closeStreams(mediaServerItem, param.getApp(), param.getStream());
|
||||||
}
|
}
|
||||||
if ("ffmpeg".equalsIgnoreCase(param.getType())){
|
if ("ffmpeg".equalsIgnoreCase(param.getType())){
|
||||||
|
if (param.getTimeoutMs() == 0) {
|
||||||
|
param.setTimeoutMs(15);
|
||||||
|
}
|
||||||
result = zlmresTfulUtils.addFFmpegSource(mediaServerItem, param.getSrcUrl().trim(), param.getDstUrl(),
|
result = zlmresTfulUtils.addFFmpegSource(mediaServerItem, param.getSrcUrl().trim(), param.getDstUrl(),
|
||||||
param.getTimeoutMs() + "", param.isEnableAudio(), param.isEnableMp4(),
|
param.getTimeoutMs() + "", param.isEnableAudio(), param.isEnableMp4(),
|
||||||
param.getFfmpegCmdKey());
|
param.getFfmpegCmdKey());
|
||||||
|
@ -379,6 +386,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|
||||||
gbStreamMapper.del(app, stream);
|
gbStreamMapper.del(app, stream);
|
||||||
videoManagerStorager.deleteStreamProxy(app, stream);
|
videoManagerStorager.deleteStreamProxy(app, stream);
|
||||||
redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PULL", app, stream);
|
redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PULL", app, stream);
|
||||||
|
redisCatchStorage.removeStream(streamProxyItem.getMediaServerId(), "PUSH", app, stream);
|
||||||
JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyItem);
|
JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyItem);
|
||||||
if (jsonObject != null && jsonObject.getInteger("code") == 0) {
|
if (jsonObject != null && jsonObject.getInteger("code") == 0) {
|
||||||
logger.info("[移除代理]: 代理: {}/{}, 从zlm移除成功", app, stream);
|
logger.info("[移除代理]: 代理: {}/{}, 从zlm移除成功", app, stream);
|
||||||
|
|
Loading…
Reference in New Issue