Используйте FFmpegFrameGrabber
в пакете org.bytedeco.javacv
.
Например:
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(file);
grabber.start();
grabber.setFrameNumber(1000);
Java2DFrameConverter paintConverter = new Java2DFrameConverter();
ImageIO.write(paintConverter.getBufferedImage(grabber.grabKeyFrame(), 1), "jpg", new FileOutputStream("somewhere"));
Вам нужна пара зависимостей, сам OpenCV, FFmpeg и собственная библиотека FFmpeg (иливсе родные библиотеки).Приведенный ниже пример Maven включает собственную библиотеку Windows.
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg</artifactId>
<version>3.4.2-1.4.1</version>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg</artifactId>
<version>3.4.2-1.4.1</version>
<classifier>windows-x86_64</classifier>
</dependency>