java中对视频流的处理不是很方便,如果想截取视频中的图像,通常是通过ffmpeg.exe进行处理,然后再去获取结果,这种方式需要预先安装ffmpeg,比较麻烦。今天介绍一种通过API的方式来截取视频中的图像。
导入相关依赖库,项目用的是gradle进行打包。
implementation('org.bytedeco:javacv:1.4.1')
implementation('org.bytedeco.javacpp-presets:ffmpeg-platform:3.4.2-1.4.1')
截取视频图像代码
FFmpegFrameGrabber fmpegFrameGrabber =new FFmpegFrameGrabber(videoPath);
fmpegFrameGrabber.start();
//获取影片的总时长,单位秒
long totalSeconds = fmpegFrameGrabber.getLengthInTime()/(1000*1000L);
//期望截取的图片所在的时间,单位秒
fmpegFrameGrabber.setVideoTimestamp(captureTimeSecond*1000*1000L);
BufferedImage grabbedImage =new Java2DFrameConverter().convert(fmpegFrameGrabber.grabImage());
ImageIO.write(grabbedImage, "png", new File(imagePath));
fmpegFrameGrabber.stop();
网友评论