Merge pull request #2161 from Gerrit1999/dev/2159

fix: 修复 issue 2159 级联点播自定义 SSRC 鉴权 key 未刷新问题
This commit is contained in:
648540858 2026-05-28 14:50:12 +08:00 committed by GitHub
commit 875c4aed6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 0 deletions

View File

@ -859,6 +859,9 @@ public class PlayServiceImpl implements IPlayService {
} }
}else { }else {
log.info("[Invite 200OK] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse); log.info("[Invite 200OK] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse);
String oldStreamId = String.format("%08x", Long.parseLong(ssrcInfo.getSsrc())).toUpperCase();
String newStreamId = String.format("%08x", Long.parseLong(ssrcInResponse)).toUpperCase();
receiveRtpServerService.refreshAuthenticateInfo(oldStreamId, newStreamId);
// ssrc 不一致 // ssrc 不一致
if (mediaServerItem.isRtpEnable()) { if (mediaServerItem.isRtpEnable()) {
// 多端口 // 多端口

View File

@ -39,4 +39,6 @@ public interface IReceiveRtpServerService {
void addAuthenticateInfo(String streamId, String streamReplace, Boolean enableAudio, Boolean enableMp4, Integer mp4MaxSecond); void addAuthenticateInfo(String streamId, String streamReplace, Boolean enableAudio, Boolean enableMp4, Integer mp4MaxSecond);
ResultForOnPublish getAuthenticateInfo(String streamId); ResultForOnPublish getAuthenticateInfo(String streamId);
void refreshAuthenticateInfo(String oldStreamId, String newStreamId);
} }

View File

@ -406,4 +406,22 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService {
} }
return null; return null;
} }
@Override
public void refreshAuthenticateInfo(String oldStreamId, String newStreamId) {
if (oldStreamId == null || newStreamId == null || oldStreamId.equals(newStreamId)) {
return;
}
String oldKey = String.format("%s:%s", VideoManagerConstants.RTP_AUTHENTICATE, oldStreamId);
Object obj = redisTemplate.opsForValue().get(oldKey);
if (obj instanceof ResultForOnPublish) {
String newKey = String.format("%s:%s", VideoManagerConstants.RTP_AUTHENTICATE, newStreamId);
redisTemplate.opsForValue().set(newKey, obj);
redisTemplate.expire(newKey, 60, TimeUnit.SECONDS);
redisTemplate.delete(oldKey);
log.info("[刷新RTP鉴权信息] {} -> {}", oldStreamId, newStreamId);
} else {
log.warn("[刷新RTP鉴权信息] 未找到旧key: {}", oldKey);
}
}
} }