panlinlin
2024-06-13 7b46769a1674a59d4e243c1f3b6d8b481099b645
修复国标录像下载后负载统计未清除的BUG
4个文件已修改
35 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/IInviteStreamService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/conf/MediaConfig.java
@@ -27,7 +27,7 @@
    @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 @@
    @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 @@
        }
        return false;
    }
    public String getWanIp() {
        return wanIp;
    }
    public void setWanIp(String wanIp) {
        this.wanIp = wanIp;
    }
}
src/main/java/com/genersoft/iot/vmp/service/IInviteStreamService.java
@@ -14,6 +14,8 @@
     */
    void updateInviteInfo(InviteInfo inviteInfo);
    void updateInviteInfo(InviteInfo inviteInfo, Long time);
    InviteInfo updateInviteInfoForStream(InviteInfo inviteInfo, String stream);
    /**
src/main/java/com/genersoft/iot/vmp/service/impl/InviteStreamServiceImpl.java
@@ -24,6 +24,7 @@
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 @@
            }
        }
    }
    @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 @@
                ":" + 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 @@
                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++;
                }
            }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -1038,7 +1038,8 @@
                            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());
                        // 设置过期时间,下载失败时自动处理订阅数据