1.需要用到的jar包,2jar包版本有关联,所以尽量保持一致
<!-- https://mvnrepository.com/artifact/org.bytedeco/javacv --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg --> <dependency> <groupId>org.bytedeco</groupId> <artifactId>ffmpeg-platform</artifactId> <version>4.1.3-1.5.1</version> </dependency>
2.util类
import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.Java2DFrameConverter; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.InputStream; public class VideoUtil { public static String getVideoFirstImg(String path)throws Exception { Frame frame = null; //构造器支持InputStream,可以直接传MultipartFile.getInputStream() FFmpegFrameGrabber fFmpegFrameGrabber = new FFmpegFrameGrabber(path); //开始播放 fFmpegFrameGrabber.start(); //获取视频总帧数 int ftp = fFmpegFrameGrabber.getLengthInFrames(); //指定第几帧 fFmpegFrameGrabber.setFrameNumber(5); //获取指定第几帧的图片 frame = fFmpegFrameGrabber.grabImage(); //文件绝对路径+名字 String fileName = "D:/upload/video/2019/08/24/first.jpg"; File outPut = new File(fileName); ImageIO.write(FrameToBufferedImage(frame), "jpg", outPut); return fileName; } public static String getVideoLastImg(String path)throws Exception { Frame frame = null; FFmpegFrameGrabber fFmpegFrameGrabber = new FFmpegFrameGrabber(path); //开始播放 fFmpegFrameGrabber.start(); //获取视频总帧数 int ftp = fFmpegFrameGrabber.getLengthInFrames(); //指定第几帧 fFmpegFrameGrabber.setFrameNumber(ftp - 1); //获取指定第几帧的图片 frame = fFmpegFrameGrabber.grabImage(); String fileName = "D:/upload/video/2019/08/24/last.jpg"; File outPut = new File(fileName); ImageIO.write(FrameToBufferedImage(frame), "jpg", outPut); return fileName; } public static BufferedImage FrameToBufferedImage(Frame frame) { Java2DFrameConverter converter = new Java2DFrameConverter(); BufferedImage bufferedImage = converter.getBufferedImage(frame); return bufferedImage; } public static void main(String[] args) throws Exception{ String videoFileName = "D:/upload/video/2019/08/24/1566612136457_DF78ACE70A68CB0EB734FA02387C3886.mp4"; System.out.println(getVideoLastImg(videoFileName)); } }