Pu Zhibing
2025-04-27 2e1766b31e889d9ee54d433476d031220dfda294
处理异常报错
3个文件已修改
24 ■■■■ 已修改文件
ruoyi-modules/ruoyi-system/pom.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/AuthorizeMsgService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/pom.xml
@@ -135,12 +135,12 @@
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv-platform</artifactId>
            <version>1.5.10</version>
            <version>1.5.11</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>ffmpeg</artifactId>
            <version>6.1.1-1.5.10</version>
            <version>7.1-1.5.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java
@@ -65,9 +65,7 @@
            
            //视频抓帧
            grabber = new FFmpegFrameGrabber(inputUrl);
            grabber.setOption("rtsp_transport", "tcp");
            // 正确设置超时时间
            grabber.setOption("timeout", "120000");
            grabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
            grabber.start();
            grabberMap.put(deviceNumber, grabber);
@@ -86,14 +84,14 @@
            recorder.setGopSize((int) grabber.getVideoFrameRate());
            // CRF 是一种用于控制视频/音频质量的参数,它允许在保持目标质量的同时动态地调整比特率。较低的CRF值表示更高的质量,但也可能导致较大的文件大小
            recorder.setAudioOption("crf", "23");
            //设置音频编码为AAC
            if (grabber.getAudioChannels() > 0) {
                recorder.setAudioChannels(grabber.getAudioChannels());
                recorder.setAudioBitrate(grabber.getAudioBitrate());
                recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
                recorder.setAudioCodec(grabber.getAudioCodec());
            }
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_FLV1);
            //将解码后的帧记录到输出文件中
            //recorder.start通常用于处理已经解码成图像的视频数据
            recorder.start();
@@ -108,12 +106,9 @@
                if (!statusMap.get(deviceNumber)) {
                    break;
                }
                Thread.sleep(500);
            }
        } catch (FrameGrabber.Exception | FrameRecorder.Exception e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        } finally {
            close(deviceNumber, null);
        }
@@ -191,7 +186,7 @@
                recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
            }
            
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_FLV1);
            //设置音频编码为AAC
            if (grabber.getAudioChannels() > 0) {
                recorder.setAudioChannels(grabber.getAudioChannels());
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/AuthorizeMsgService.java
@@ -1,6 +1,7 @@
package com.ruoyi.dataInterchange.server;
import com.alibaba.fastjson.JSON;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.dataInterchange.dao.UPAuthorizeMsgStartupDao;
import com.ruoyi.dataInterchange.model.UPAuthorizeMsgStartup;
import com.ruoyi.dataInterchange.util.jtt809.packet.common.OuterPacket;
@@ -43,6 +44,8 @@
        log.info("视频时效口令上报:" + JSON.toJSONString(startup));
        startup.setInferiorPlatformId(out.getGnsscenterId());
        startup.setCreateTime(LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
        upAuthorizeMsgStartupDao.save(startup);
        if(StringUtils.isNotEmpty(startup.getAuthorizeCode1())){
            upAuthorizeMsgStartupDao.save(startup);
        }
    }
}