Commit 8a9f8c6cab1e619d1a0e10430ef49a7f2b62a1f2

Authored by xiaoQQya
1 parent 941b9a83

fix: 修复推流鉴权时 enable_audio 设置错误的问题

推流鉴权获取 ssrc 缓存事务时通过 zlm 回调参数中的 stream 查询,因回调参数中的 stream 为 ssrc,而缓存事务中的 stream 为 deviceId_channelId,故导致查询不到缓存事务信息,进而导致查询不到设备信息无法正确配置 enable_audio 信息,现改为通过 deviceId 与 channelId 查询缓存事务信息
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -244,7 +244,6 @@ public class ZLMHttpHookListener { @@ -244,7 +244,6 @@ public class ZLMHttpHookListener {
244 244
245 245
246 HookResultForOnPublish result = HookResultForOnPublish.SUCCESS(); 246 HookResultForOnPublish result = HookResultForOnPublish.SUCCESS();
247 - result.setEnable_audio(true);  
248 taskExecutor.execute(() -> { 247 taskExecutor.execute(() -> {
249 ZlmHttpHookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_publish, json); 248 ZlmHttpHookSubscribe.Event subscribe = this.subscribe.sendNotify(HookType.on_publish, json);
250 if (subscribe != null) { 249 if (subscribe != null) {
@@ -262,29 +261,36 @@ public class ZLMHttpHookListener { @@ -262,29 +261,36 @@ public class ZLMHttpHookListener {
262 } else { 261 } else {
263 result.setEnable_mp4(userSetting.isRecordPushLive()); 262 result.setEnable_mp4(userSetting.isRecordPushLive());
264 } 263 }
265 - // 替换流地址  
266 - if ("rtp".equals(param.getApp()) && !mediaInfo.isRtpEnable()) {  
267 - String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));; 264 +
  265 + // 国标流
  266 + if ("rtp".equals(param.getApp())) {
  267 + String ssrc = String.format("%010d", Long.parseLong(param.getStream(), 16));
268 InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc); 268 InviteInfo inviteInfo = inviteStreamService.getInviteInfoBySSRC(ssrc);
269 - if (inviteInfo != null) { 269 +
  270 + // 单端口模式下修改流 ID
  271 + if (!mediaInfo.isRtpEnable() && inviteInfo != null) {
270 result.setStream_replace(inviteInfo.getStream()); 272 result.setStream_replace(inviteInfo.getStream());
271 logger.info("[ZLM HOOK]推流鉴权 stream: {} 替换为 {}", param.getStream(), inviteInfo.getStream()); 273 logger.info("[ZLM HOOK]推流鉴权 stream: {} 替换为 {}", param.getStream(), inviteInfo.getStream());
272 } 274 }
273 - }  
274 - List<SsrcTransaction> ssrcTransactionForAll = sessionManager.getSsrcTransactionForAll(null, null, null, param.getStream());  
275 - if (ssrcTransactionForAll != null && ssrcTransactionForAll.size() == 1) {  
276 - String deviceId = ssrcTransactionForAll.get(0).getDeviceId();  
277 - String channelId = ssrcTransactionForAll.get(0).getChannelId();  
278 - DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId);  
279 - if (deviceChannel != null) {  
280 - result.setEnable_audio(deviceChannel.isHasAudio());  
281 - }  
282 - // 如果是录像下载就设置视频间隔十秒  
283 - if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {  
284 - result.setMp4_max_second(10);  
285 - result.setEnable_mp4(true); 275 +
  276 + // 设置音频信息及录制信息
  277 + List<SsrcTransaction> ssrcTransactionForAll = (inviteInfo == null ? null :
  278 + sessionManager.getSsrcTransactionForAll(inviteInfo.getDeviceId(), inviteInfo.getChannelId(), null, null));
  279 + if (ssrcTransactionForAll != null && ssrcTransactionForAll.size() == 1) {
  280 + String deviceId = ssrcTransactionForAll.get(0).getDeviceId();
  281 + String channelId = ssrcTransactionForAll.get(0).getChannelId();
  282 + DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId);
  283 + if (deviceChannel != null) {
  284 + result.setEnable_audio(deviceChannel.isHasAudio());
  285 + }
  286 + // 如果是录像下载就设置视频间隔十秒
  287 + if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {
  288 + result.setMp4_max_second(10);
  289 + result.setEnable_mp4(true);
  290 + }
286 } 291 }
287 } 292 }
  293 +
288 if (mediaInfo.getRecordAssistPort() > 0 && userSetting.getRecordPath() == null) { 294 if (mediaInfo.getRecordAssistPort() > 0 && userSetting.getRecordPath() == null) {
289 logger.info("推流时发现尚未设置录像路径,从assist服务中读取"); 295 logger.info("推流时发现尚未设置录像路径,从assist服务中读取");
290 JSONObject info = assistRESTfulUtils.getInfo(mediaInfo, null); 296 JSONObject info = assistRESTfulUtils.getInfo(mediaInfo, null);