From 2e1766b31e889d9ee54d433476d031220dfda294 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期日, 27 四月 2025 17:46:24 +0800
Subject: [PATCH] 处理异常报错

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java |   15 +++++----------
 1 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java
index 0b80278..4356127 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/util/JavaCVStreamUtil.java
+++ b/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());

--
Gitblit v1.7.1