优化zlm接入是拉流代理的逻辑

pull/1699/head
648540858 2024-11-18 16:26:14 +08:00
parent b38e5508f6
commit 8a42f15d34
3 changed files with 7 additions and 10 deletions

View File

@ -48,8 +48,8 @@ public interface StreamProxyMapper {
@SelectProvider(type = StreamProxyProvider.class, method = "selectOneByAppAndStream")
StreamProxy selectOneByAppAndStream(@Param("app") String app, @Param("stream") String stream);
@SelectProvider(type = StreamProxyProvider.class, method = "selectForEnableInMediaServer")
List<StreamProxy> selectForEnableInMediaServer(@Param("mediaServerId") String mediaServerId, @Param("enable") boolean enable);
@SelectProvider(type = StreamProxyProvider.class, method = "selectForPushingInMediaServer")
List<StreamProxy> selectForPushingInMediaServer(@Param("mediaServerId") String mediaServerId, @Param("enable") boolean enable);
@Select("select count(1) from wvp_stream_proxy")

View File

@ -19,9 +19,8 @@ public class StreamProxyProvider {
return getBaseSelectSql() + " WHERE st.id = " + params.get("id");
}
public String selectForEnableInMediaServer(Map<String, Object> params ){
return getBaseSelectSql() + String.format(" WHERE st.enable=%s and st.media_server_id= '%s' order by st.create_time desc",
params.get("enable"), params.get("mediaServerId"));
public String selectForPushingInMediaServer(Map<String, Object> params ){
return getBaseSelectSql() + " WHERE st.pulling=1 and st.media_server_id=#{mediaServerId} order by st.create_time desc";
}
public String selectOneByAppAndStream(Map<String, Object> params ){

View File

@ -296,7 +296,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
// 这里主要是控制数据库/redis缓存/以及zlm中存在的代理流 三者状态一致。以数据库中数据为根本
redisCatchStorage.removeStream(mediaServer.getId(), "PULL");
List<StreamProxy> streamProxies = streamProxyMapper.selectForEnableInMediaServer(mediaServer.getId(), true);
List<StreamProxy> streamProxies = streamProxyMapper.selectForPushingInMediaServer(mediaServer.getId(), true);
if (streamProxies.isEmpty()) {
return;
}
@ -353,18 +353,16 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
streamProxyMapper.deleteByList(streamProxiesForRemove);
}
if (!streamProxyMapForDb.isEmpty()) {
for (StreamProxy streamProxy : streamProxyMapForDb.values()) {
log.info("恢复流代理," + streamProxy.getApp() + "/" + streamProxy.getStream());
mediaServerService.startProxy(mediaServer, streamProxy);
streamProxyMapper.offline(streamProxy.getId());
}
}
}
@Override
public void zlmServerOffline(MediaServer mediaServer) {
List<StreamProxy> streamProxies = streamProxyMapper.selectForEnableInMediaServer(mediaServer.getId(), true);
List<StreamProxy> streamProxies = streamProxyMapper.selectForPushingInMediaServer(mediaServer.getId(), true);
// 清理redis相关的缓存
redisCatchStorage.removeStream(mediaServer.getId(), "PULL");