Compare commits

...

5 Commits

Author SHA1 Message Date
阿斌
6fa12f22a0
Pre Merge pull request !36 from 阿斌/N/A 2026-05-28 07:31:54 +00:00
648540858
875c4aed6d
Merge pull request #2161 from Gerrit1999/dev/2159
fix: 修复 issue 2159 级联点播自定义 SSRC 鉴权 key 未刷新问题
2026-05-28 14:50:12 +08:00
lin
2fc63caf13 SSRC管理-加快SSRC重建频率 2026-05-28 14:42:09 +08:00
gerrit
75c38d6c9a
fix: 级联点播下级自定义SSRC后同步刷新RTP鉴权key
当 use-custom-ssrc-for-parent-invite=true 时,下级平台可在 200 OK SDP
中返回自定义 SSRC。此前仅在开收流时按原始 SSRC 写入一次 Redis 鉴权
key,导致 ZLM on_publish 以实际 SSRC 查 Redis 时鉴权失败。

新增 IReceiveRtpServerService.refreshAuthenticateInfo(),在
PlayServiceImpl.InviteOKHandler 解析出最终 SSRC 后,如与原始值不
一致,先刷新 Redis 鉴权 key,再继续现有 SSRC 更新流程。覆盖点播、
回放、下载三种场景。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:29:15 +08:00
阿斌
da98101aac
update src/main/resources/civilCode.csv.
行政规划错误。江苏南通海门市,修改为海门区,浙江杭州删除下城区、江干区,新增钱塘区,临平区

Signed-off-by: 阿斌 <38912748@qq.com>
2024-12-15 08:58:42 +00:00
5 changed files with 30 additions and 8 deletions

View File

@ -859,6 +859,9 @@ public class PlayServiceImpl implements IPlayService {
}
}else {
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 不一致
if (mediaServerItem.isRtpEnable()) {
// 多端口

View File

@ -50,7 +50,7 @@ public class SSRCFactory {
public void init() {
String sipDomain = sipConfig.getDomain();
domainPart = sipDomain.length() >= 8 ? sipDomain.substring(3, 8) : sipDomain;
scheduler.scheduleAtFixedRate(this::rebuild, 10, 30, TimeUnit.SECONDS);
scheduler.scheduleAtFixedRate(this::rebuild, 5, 5, TimeUnit.SECONDS);
}
public String getPlaySsrc(String mediaServerId) {
@ -127,12 +127,11 @@ public class SSRCFactory {
usedMap.put(server.getId(), bits);
if (count > 8000) {
log.info("[SSRC重建] 媒体节点 {} 的SSRC使用率已超过80%,请注意扩展服务提升性能", server.getId());
} else {
}
if (log.isDebugEnabled()) {
log.debug("[SSRC重建] 节点 {} 已占用 {} 个SSRC", server.getId(), count);
}
}
}
}
}
}

View File

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

View File

@ -406,4 +406,22 @@ public class RtpServerServiceImpl implements IReceiveRtpServerService {
}
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);
}
}
}

View File

@ -861,7 +861,7 @@
320623,如东县,3206
320681,启东市,3206
320682,如皋市,3206
320684,海门,3206
320684,海门,3206
320685,海安市,3206
3207,连云港市,32
320703,连云区,3207
@ -918,8 +918,6 @@
33,浙江省,
3301,杭州市,33
330102,上城区,3301
330103,下城区,3301
330104,江干区,3301
330105,拱墅区,3301
330106,西湖区,3301
330108,滨江区,3301
@ -927,6 +925,8 @@
330110,余杭区,3301
330111,富阳区,3301
330112,临安区,3301
330113,临平区,3301
330114,钱塘区,3301
330122,桐庐县,3301
330127,淳安县,3301
330182,建德市,3301

1 编号 名称 上级
861 320623 如东县 3206
862 320681 启东市 3206
863 320682 如皋市 3206
864 320684 海门市 海门区 3206
865 320685 海安市 3206
866 3207 连云港市 32
867 320703 连云区 3207
918 33 浙江省
919 3301 杭州市 33
920 330102 上城区 3301
330103 下城区 3301
330104 江干区 3301
921 330105 拱墅区 3301
922 330106 西湖区 3301
923 330108 滨江区 3301
925 330110 余杭区 3301
926 330111 富阳区 3301
927 330112 临安区 3301
928 330113 临平区 3301
929 330114 钱塘区 3301
930 330122 桐庐县 3301
931 330127 淳安县 3301
932 330182 建德市 3301