java获取vlc视频截图
所需maven 依赖
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv-platform</artifactId>
<version>3.4.1-1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg-platform</artifactId>
<version>3.4.2-1.4.1</version>
</dependency>
代码块
package com.yr.Vlcj;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
/**
* 解析视频工具
* @author WP
*
*/
public class Vcg {
//获取处理视频
public static void fetchPic(String file,String frameFile) throws Exception{
//获取解码器
FFmpegFrameGrabber jmq = new FFmpegFrameGrabber(file);
//开启解码器
jmq.start();
Frame frame = jmq.grabImage();
String imgSuffix = "jpg";
File targetFile = new File(frameFile+".jpg");
Java2DFrameConverter converter =new Java2DFrameConverter();
BufferedImage srcBi =converter.getBufferedImage(frame);
int width = 1920;
int height = 1280;
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
bi.getGraphics().drawImage(srcBi.getScaledInstance(width, height, Image.SCALE_SMOOTH),0, 0, null);
try {
ImageIO.write(bi, imgSuffix, targetFile);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("图片截取成功");
}
public static void main(String[] args){
try {
String file="rtsp路径";
String frameFile="本地保存路径";
Vcg.fetchPic(file,frameFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}