From 42a6af7c538b019dc4906580bdf866b15fd7f6b1 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Sun, 28 Sep 2025 11:25:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thread/MediaTransferFlvByJavacv.java | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByJavacv.java b/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByJavacv.java index c9ee45e..05beded 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByJavacv.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/thread/MediaTransferFlvByJavacv.java @@ -464,27 +464,11 @@ public class MediaTransferFlvByJavacv extends MediaTransfer implements Runnable finishWindow(); } - // 完全重新创建Frame,避免使用转换器 - int width = src.cols(); - int height = src.rows(); - int depth = src.depth(); - int channels = src.channels(); + // 安全处理:跳过检测模式,直接使用grabber.grab() + frame = grabber.grab(); - // 创建新的Frame - frame = new Frame(width, height, Frame.DEPTH_UBYTE, channels); - - // 将Mat数据复制到Frame - ByteBuffer frameBuffer = (ByteBuffer)frame.image[0]; - frameBuffer.clear(); - - // 确保Mat是连续的 - Mat continuous = src.isContinuous() ? src : src.clone(); - byte[] matData = new byte[Math.toIntExact(continuous.total() * continuous.elemSize())]; - continuous.data().get(matData); - - // 复制数据 - frameBuffer.put(matData); - frameBuffer.rewind(); + // 如果需要,可以在这里添加日志 + log.debug("检测模式下使用直接抓取帧"); } else { frame = grabber.grab(); }