فهرست منبع

修复国标录像下载后负载统计未清除的BUG

panlinlin 1 سال پیش
والد
کامیت
7b46769a16

+ 11 - 3
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java

@@ -27,7 +27,7 @@ public class MediaConfig{
     @Value("${media.ip}")
     private String ip;
 
-    @Value("${media.wan_ip}")
+    @Value("${media.wan_ip:}")
     private String wanIp;
 
     @Value("${media.hook-ip:127.0.0.1}")
@@ -36,10 +36,10 @@ public class MediaConfig{
     @Value("${sip.domain}")
     private String sipDomain;
 
-    @Value("${media.sdp-ip:${media.wan_ip}}")
+    @Value("${media.sdp-ip:${media.wan_ip:}}")
     private String sdpIp;
 
-    @Value("${media.stream-ip:${media.wan_ip}}")
+    @Value("${media.stream-ip:${media.wan_ip:}}")
     private String streamIp;
 
     @Value("${media.http-port:0}")
@@ -283,4 +283,12 @@ public class MediaConfig{
         }
         return false;
     }
+
+    public String getWanIp() {
+        return wanIp;
+    }
+
+    public void setWanIp(String wanIp) {
+        this.wanIp = wanIp;
+    }
 }

+ 2 - 0
src/main/java/com/genersoft/iot/vmp/service/IInviteStreamService.java

@@ -14,6 +14,8 @@ public interface IInviteStreamService {
      */
     void updateInviteInfo(InviteInfo inviteInfo);
 
+    void updateInviteInfo(InviteInfo inviteInfo, Long time);
+
     InviteInfo updateInviteInfoForStream(InviteInfo inviteInfo, String stream);
 
     /**

+ 14 - 2
src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.TimeUnit;
 
 @Service
 @DS("master")
@@ -64,9 +65,13 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
             }
         }
     }
-
     @Override
     public void updateInviteInfo(InviteInfo inviteInfo) {
+        updateInviteInfo(inviteInfo, null);
+    }
+
+    @Override
+    public void updateInviteInfo(InviteInfo inviteInfo, Long time) {
         if (inviteInfo == null || (inviteInfo.getDeviceId() == null || inviteInfo.getChannelId() == null)) {
             logger.warn("[更新Invite信息],参数不全: {}", JSON.toJSON(inviteInfo));
             return;
@@ -118,7 +123,11 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
                 ":" + inviteInfoForUpdate.getChannelId() +
                 ":" + inviteInfoForUpdate.getStream()+
                 ":" + inviteInfoForUpdate.getSsrcInfo().getSsrc();
-        redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
+        if (time != null && time > 0) {
+            redisTemplate.opsForValue().set(key, inviteInfoForUpdate, time, TimeUnit.SECONDS);
+        }else {
+            redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
+        }
     }
 
     @Override
@@ -243,6 +252,9 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
                 String keyStr = (String) keyObj;
                 InviteInfo inviteInfo = (InviteInfo) redisTemplate.opsForValue().get(keyStr);
                 if (inviteInfo != null && inviteInfo.getStreamInfo() != null && inviteInfo.getStreamInfo().getMediaServerId().equals(mediaServerId)) {
+                    if (inviteInfo.getType().equals(InviteSessionType.DOWNLOAD) && inviteInfo.getStreamInfo().getProgress() == 1) {
+                        continue;
+                    }
                     count++;
                 }
             }

+ 2 - 1
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java

@@ -1038,7 +1038,8 @@ public class PlayServiceImpl implements IPlayService {
                             InviteInfo inviteInfoForNew = inviteStreamService.getInviteInfo(inviteInfo.getType(), inviteInfo.getDeviceId()
                                     , inviteInfo.getChannelId(), inviteInfo.getStream());
                             inviteInfoForNew.getStreamInfo().setDownLoadFilePath(downloadFileInfo);
-                            inviteStreamService.updateInviteInfo(inviteInfoForNew);
+                            // 不可以马上移除会导致后续接口拿不到下载地址
+                            inviteStreamService.updateInviteInfo(inviteInfoForNew, 60*15L);
                         };
                         Hook hook = Hook.getInstance(HookType.on_record_mp4, "rtp", ssrcInfo.getStream(), mediaServerItem.getId());
                         // 设置过期时间,下载失败时自动处理订阅数据