OpenCV: возможно ли открыть сжатое видео на Java? - PullRequest
0 голосов
/ 22 мая 2019

Я сжал видео в формате .avi. Я хочу получить кадры из видео с помощью OpenCV.

public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    String filePath = "C:\\Users\\P6090053.avi";
    String output = "C:\\Users\\Test";

    if (!Paths.get(filePath).toFile().exists()) {
       System.out.println("File " + filePath + " does not exist!");
       return;
    }
   VideoCapture video = new VideoCapture(filePath);

   video.open(filePath);/*Cant open compressed video*/

   System.out.println(video.isOpened()); /*Always returns **false***/
}

Принимая во внимание, что с помощью приведенного выше кода я могу открыть несжатое видео, но не могу открыть сжатое видео формата «Microsoft RLE».

Информация о видео: FileExtension: "avi", формат: "RLE", CodecID: "0 * 01000000"

Пример видео: http://www.engr.colostate.edu/me/facil/dynamics/avis.htm (скачать bird.avi - Формат - Indeo4 )

Заранее спасибо:)

1 Ответ

0 голосов
/ 22 мая 2019

Используйте 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>
...