Просмотр исходного кода

修复stream-on-demand配置失效的BUG

648540858 2 лет назад
Родитель
Сommit
03f3598681
1 измененных файлов с 22 добавлено и 18 удалено
  1. 22 18
      src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java

+ 22 - 18
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java

@@ -451,11 +451,6 @@ public class ZLMHttpHookListener {
             InviteInfo inviteInfo = inviteStreamService.getInviteInfoByStream(null, param.getStream());
             // 点播
             if (inviteInfo != null) {
-                // 录像下载
-                if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) {
-                    ret.put("close", false);
-                    return ret;
-                }
                 // 收到无人观看说明流也没有在往上级推送
                 if (redisCatchStorage.isChannelSendingRTP(inviteInfo.getChannelId())) {
                     List<SendRtpItem> sendRtpItems = redisCatchStorage.querySendRTPServerByChnnelId(
@@ -473,22 +468,31 @@ public class ZLMHttpHookListener {
                         }
                     }
                 }
-                Device device = deviceService.getDevice(inviteInfo.getDeviceId());
-                if (device != null) {
-                    try {
-                        if (inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(), inviteInfo.getChannelId(), inviteInfo.getStream()) != null) {
-                            cmder.streamByeCmd(device, inviteInfo.getChannelId(),
-                                    inviteInfo.getStream(), null);
+
+                if (userSetting.getStreamOnDemand()) {
+                    // 录像下载
+                    if (inviteInfo.getType() == InviteSessionType.DOWNLOAD) {
+                        ret.put("close", false);
+                        return ret;
+                    }
+
+                    Device device = deviceService.getDevice(inviteInfo.getDeviceId());
+                    if (device != null) {
+                        try {
+                            if (inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(), inviteInfo.getChannelId(), inviteInfo.getStream()) != null) {
+                                cmder.streamByeCmd(device, inviteInfo.getChannelId(),
+                                        inviteInfo.getStream(), null);
+                            }
+                        } catch (InvalidArgumentException | ParseException | SipException |
+                                 SsrcTransactionNotFoundException e) {
+                            logger.error("[无人观看]点播, 发送BYE失败 {}", e.getMessage());
                         }
-                    } catch (InvalidArgumentException | ParseException | SipException |
-                             SsrcTransactionNotFoundException e) {
-                        logger.error("[无人观看]点播, 发送BYE失败 {}", e.getMessage());
                     }
-                }
 
-                inviteStreamService.removeInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(),
-                        inviteInfo.getChannelId(), inviteInfo.getStream());
-                storager.stopPlay(inviteInfo.getDeviceId(), inviteInfo.getChannelId());
+                    inviteStreamService.removeInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId(),
+                            inviteInfo.getChannelId(), inviteInfo.getStream());
+                    storager.stopPlay(inviteInfo.getDeviceId(), inviteInfo.getChannelId());
+                }
                 return ret;
             }
         } else {