manage: test 添加视频处理测试代码

dev_2.1.0
xueqingkun 1 year ago
parent e039e742dd
commit f914ea2b82

@ -29,6 +29,35 @@
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
<!-- 操作视频流 -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>1.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>3.4.1-1.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>3.4.2-1.4.1</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba.nacos</groupId> <groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-common</artifactId> <artifactId>nacos-common</artifactId>

@ -0,0 +1,69 @@
package com.supervision.manage.video;
import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacv.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class VideoPreviewGenerator {
/**
*
*
* @param filePath
* @param targetFilePath
* @param targetFileName
*/
public static void getVideoFirstFrameImage(String filePath, String targetFilePath, String targetFileName) throws FrameGrabber.Exception {
FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);
ff.start();
String rotate = ff.getVideoMetadata("rotate");
Frame f;
int i = 0;
while (i < 1) {
f = ff.grabImage();
opencv_core.IplImage src;
if (null != rotate && rotate.length() > 1) {
OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
src = converter.convert(f);
f = converter.convert(rotate(src, Integer.parseInt(rotate)));
}
doExecuteFrame(f, targetFilePath, targetFileName);
i++;
}
ff.stop();
}
/**
*
*/
public static opencv_core.IplImage rotate(opencv_core.IplImage src, int angle) {
opencv_core.IplImage img = opencv_core.IplImage.create(src.height(), src.width(), src.depth(), src.nChannels());
opencv_core.cvTranspose(src, img);
opencv_core.cvFlip(img, img, angle);
return img;
}
public static void doExecuteFrame(Frame f, String targetFilePath, String targetFileName) {
if (null == f || null == f.image) {
return;
}
Java2DFrameConverter converter = new Java2DFrameConverter();
String imageMat = "jpg";
String fileName = targetFilePath + File.separator + targetFileName + "." + imageMat;
BufferedImage bi = converter.getBufferedImage(f);
File output = new File(fileName);
try {
ImageIO.write(bi, imageMat, output);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws FrameGrabber.Exception {
String url = "F:\\tmp\\测试1.mp4";
getVideoFirstFrameImage(url, "F:\\tmp\\", "first");
}
}
Loading…
Cancel
Save