针对 视频下载 zlm 流注册/销 额外处理
This commit is contained in:
parent
8f0b0be8b3
commit
1ac99217f5
@ -153,18 +153,39 @@ public class DeviceProxyService {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// });
|
zlmStreamRegistHookEvent(DEFAULT_ZLM_APP, callId, ssrc);
|
||||||
zlmStreamChangeHookService.getUnregistHandler(DEFAULT_ZLM_APP).put(callId,()->{
|
|
||||||
StopSendRtp stopSendRtp = new StopSendRtp();
|
|
||||||
stopSendRtp.setApp(DEFAULT_ZLM_APP);
|
|
||||||
stopSendRtp.setStream(callId);
|
|
||||||
stopSendRtp.setSsrc(ssrc);
|
|
||||||
});
|
|
||||||
zlmStreamNoneReaderHookService.getHandler(DEFAULT_ZLM_APP).put(callId,()->{
|
zlmStreamNoneReaderHookService.getHandler(DEFAULT_ZLM_APP).put(callId,()->{
|
||||||
sendBye(request,device,key);
|
sendBye(request,device,key);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void zlmStreamRegistHookEvent(String app, String callId, String ssrc){
|
||||||
|
zlmStreamChangeHookService.getUnregistHandler(app).put(callId,()->{
|
||||||
|
scheduledExecutorService.submit(()->{
|
||||||
|
ScheduledFuture<?> schedule = scheduledExecutorService.schedule(() -> {
|
||||||
|
StopSendRtp stopSendRtp = new StopSendRtp();
|
||||||
|
stopSendRtp.setApp(app);
|
||||||
|
stopSendRtp.setStream(callId);
|
||||||
|
stopSendRtp.setSsrc(ssrc);
|
||||||
|
|
||||||
|
log.info("结束 zlm rtp 推流, app {}, stream {}, ssrc {}", app, callId, ssrc);
|
||||||
|
zlmMediaService.stopSendRtp(stopSendRtp);
|
||||||
|
}, 3, TimeUnit.SECONDS);
|
||||||
|
|
||||||
|
// 如果 流 在 3秒内 重新注册, 则 取消停止RTP推流
|
||||||
|
zlmStreamChangeHookService.getRegistHandler(app).put(callId,()->{
|
||||||
|
schedule.cancel(true);
|
||||||
|
zlmStreamRegistHookEvent(app, callId, ssrc);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果 注销 后 3.5 秒内 没有再注册, 就彻底取消相关事件的订阅
|
||||||
|
scheduledExecutorService.schedule(()->{
|
||||||
|
zlmStreamChangeHookService.getRegistHandler(app).remove(callId);
|
||||||
|
},3500, TimeUnit.MILLISECONDS);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private Flow.Subscriber<SIPRequest> ffmpegTask(SIPRequest request,ConcurrentHashMap<String, Executor> tasks, String callId, String key, MockingDevice device){
|
private Flow.Subscriber<SIPRequest> ffmpegTask(SIPRequest request,ConcurrentHashMap<String, Executor> tasks, String callId, String key, MockingDevice device){
|
||||||
Optional.ofNullable(tasks.get(callId)).ifPresent(task->{
|
Optional.ofNullable(tasks.get(callId)).ifPresent(task->{
|
||||||
task.getWatchdog().destroyProcess();
|
task.getWatchdog().destroyProcess();
|
||||||
@ -475,6 +496,7 @@ public class DeviceProxyService {
|
|||||||
stopSendRtp.setStream(callId);
|
stopSendRtp.setStream(callId);
|
||||||
stopSendRtp.setSsrc(ssrc);
|
stopSendRtp.setSsrc(ssrc);
|
||||||
|
|
||||||
|
log.info("结束 zlm rtp 推流, app {}, stream {}, ssrc {}", ZLM_FFMPEG_PROXY_APP, callId, ssrc);
|
||||||
zlmMediaService.stopSendRtp(stopSendRtp);
|
zlmMediaService.stopSendRtp(stopSendRtp);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -562,6 +584,7 @@ public class DeviceProxyService {
|
|||||||
stopSendRtp.setStream(callId);
|
stopSendRtp.setStream(callId);
|
||||||
stopSendRtp.setSsrc(ssrc);
|
stopSendRtp.setSsrc(ssrc);
|
||||||
|
|
||||||
|
log.info("结束 zlm rtp 推流, app {}, stream {}, ssrc {}", DEFAULT_ZLM_APP, callId, ssrc);
|
||||||
zlmMediaService.stopSendRtp(stopSendRtp);
|
zlmMediaService.stopSendRtp(stopSendRtp);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -29,6 +29,8 @@ public class ZlmInitService {
|
|||||||
hook.setOnStreamChanged(zlmHookConfig.getHook() + "/on_stream_changed");
|
hook.setOnStreamChanged(zlmHookConfig.getHook() + "/on_stream_changed");
|
||||||
hook.setOnStreamNoneReader(zlmHookConfig.getHook() + "/on_stream_none_reader");
|
hook.setOnStreamNoneReader(zlmHookConfig.getHook() + "/on_stream_none_reader");
|
||||||
hook.setOnPublish(zlmHookConfig.getHook() + "/on_publish");
|
hook.setOnPublish(zlmHookConfig.getHook() + "/on_publish");
|
||||||
|
config.getRtmp().setHandshakeSecond(5);
|
||||||
|
config.getRtmp().setKeepAliveSecond(10);
|
||||||
zlmMediaService.setServerConfig(config);
|
zlmMediaService.setServerConfig(config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user