648540858
2023-12-05 ad36354ef46a31f24b2583263f575d6736c0ad28
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
@@ -275,7 +275,7 @@
        List<SsrcTransaction> ssrcTransactionForAll = sessionManager.getSsrcTransactionForAll(null, null, null, param.getStream());
        if (ssrcTransactionForAll != null && ssrcTransactionForAll.size() == 1) {
            // 为录制国标模拟一个鉴权信息
            // 为录制国标模拟一个鉴权信息, 方便后续写入录像文件时使用
            StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
            streamAuthorityInfo.setApp(param.getApp());
            streamAuthorityInfo.setStream(ssrcTransactionForAll.get(0).getStream());
@@ -291,8 +291,18 @@
            }
            // 如果是录像下载就设置视频间隔十秒
            if (ssrcTransactionForAll.get(0).getType() == InviteSessionType.DOWNLOAD) {
                result.setMp4_max_second(30);
                result.setEnable_mp4(true);
                // 获取录像的总时长,然后设置为这个视频的时长
                InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, deviceId, channelId, param.getStream());
                if (inviteInfo.getStreamInfo() != null ) {
                    String startTime = inviteInfo.getStreamInfo().getStartTime();
                    String endTime = inviteInfo.getStreamInfo().getEndTime();
                    long difference = DateUtil.getDifference(startTime, endTime)/1000;
                    result.setMp4_max_second((int)difference);
                    result.setEnable_mp4(true);
                    // 设置为2保证得到的mp4的时长是正常的
                    result.setModify_stamp(2);
                }
            }
        }
        if (param.getApp().equalsIgnoreCase("rtp")) {
@@ -392,6 +402,9 @@
                                    || param.getOriginType() == OriginType.RTC_PUSH.ordinal()) {
                                param.setSeverId(userSetting.getServerId());
                                zlmMediaListManager.addPush(param);
                                // 冗余数据,自己系统中自用
                                redisCatchStorage.addPushListItem(param.getApp(), param.getStream(), param);
                            }
                        } else {
                            // 兼容流注销时类型从redis记录获取
@@ -400,6 +413,10 @@
                            if (onStreamChangedHookParam != null) {
                                type = OriginType.values()[onStreamChangedHookParam.getOriginType()].getType();
                                redisCatchStorage.removeStream(mediaInfo.getId(), type, param.getApp(), param.getStream());
                                if ("PUSH".equalsIgnoreCase(type)) {
                                    // 冗余数据,自己系统中自用
                                    redisCatchStorage.removePushListItem(param.getApp(), param.getStream(), param.getMediaServerId());
                                }
                            }
                            GbStream gbStream = storager.getGbStream(param.getApp(), param.getStream());
                            if (gbStream != null) {