From d9d70577933e9cd021b4ff6d26c576d6dbd9161a Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 28 八月 2024 17:54:41 +0800
Subject: [PATCH] 点播定时任务优化
---
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 50 +++++++++++++++++++++++++++++++++-----------------
pom.xml | 6 ++++++
2 files changed, 39 insertions(+), 17 deletions(-)
diff --git a/pom.xml b/pom.xml
index c2ea5e9..82b6100 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,6 +126,12 @@
</dependencyManagement>
<dependencies>
+ <dependency>
+ <groupId>org.bytedeco</groupId>
+ <artifactId>javacv-platform</artifactId>
+ <version>1.5.1</version>
+ <type>pom</type>
+ </dependency>
<!-- sip鍗忚鏍� -->
<dependency>
<groupId>javax.sip</groupId>
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 050a9cf..d944fb8 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -44,9 +44,9 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
-import org.bytedeco.javacv.FFmpegFrameGrabber;
-import org.bytedeco.javacv.Frame;
-import org.bytedeco.javacv.Java2DFrameConverter;
+import org.bytedeco.javacv.*;
+import org.bytedeco.opencv.global.opencv_imgcodecs;
+import org.bytedeco.opencv.opencv_core.Mat;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -57,6 +57,7 @@
import org.springframework.util.StringUtils;
import javax.imageio.ImageIO;
+import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
@@ -673,24 +674,39 @@
log.error("鐩爣鍦板潃锛�" + rtspUrl);
if (StringUtils.hasText(rtspUrl)) {
try {
- // 鍒涘缓FFmpegFrameGrabber瀵硅薄
- FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(rtspUrl);
- grabber.start(); // 寮�濮嬫崟鑾�
+ FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(rtspUrl);
+ grabber.setOption("rtsp_transport", "tcp"); // 浣跨敤tcp鐨勬柟寮忥紝涓嶇劧浼氫涪鍖呭緢涓ラ噸
+ grabber.setImageWidth(960);
+ grabber.setImageHeight(540);
+ grabber.start();
+ CanvasFrame canvasFrame = new CanvasFrame("姝h寕");// 鍒涘缓绐楀彛
+ canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 璁剧疆绐楀彛鍏抽棴绋嬪簭鏄惁涔熻窡闅忓叧闂�
+ canvasFrame.setAlwaysOnTop(true);
- Frame frame;
- String imgPath;
+ OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
+ int ex = 0;
+ String imgPath = null;
while (true) {
- frame = grabber.grabFrame();
- if (Objects.nonNull(frame)) {
- // 灏嗗抚杞崲涓哄浘鐗�
- Java2DFrameConverter converter = new Java2DFrameConverter();
- BufferedImage image = converter.convert(frame);
- File outputfile = new File(serverConfig.getUrl() + PlatformConfig.getUploadPath() + deviceId + IdUtils.fastSimpleUUID() + ".png");
- ImageIO.write(image, "png", outputfile);
- imgPath = outputfile.getAbsolutePath();
- log.error("鍥剧墖鍦板潃锛� " + imgPath);
+ if (ex > 1) {
break;
}
+ Frame frame = grabber.grabImage();
+ canvasFrame.showImage(frame);
+ //绋嬪簭鍒拌繖閲屽叾瀹炲凡缁忓疄鐜颁簡棰勮鐨勫姛鑳戒簡锛屼笅闈㈢殑鏂规硶灏辨槸灏嗘祦淇濆瓨鎴愬浘鐗�
+
+ //opencv_core.Mat
+ Mat mat = converter.convertToMat(frame);
+ imgPath = serverConfig.getUrl() + PlatformConfig.getUploadPath() + deviceId + IdUtils.fastSimpleUUID() + ".png";
+ opencv_imgcodecs.imwrite(imgPath, mat);
+
+ ex++;
+ try {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ } // 1000姣鍒锋柊涓�娆″湒鍍�
}
grabber.stop(); // 鍋滄鎹曡幏
grabber.release(); // 閲婃斁璧勬簮
--
Gitblit v1.8.0