来自javacv的outOfMemoryError

时间:2018-02-14 09:51:21

标签: java ffmpeg javacv

我们正在使用javacv库来创建视频缩略图。我们可以创建缩略图。但是当我们上传更多视频(20 to 30 of 10MB to 40MB)时,应用程序会抛出掉MoMemoryError。

我们正在使用1.3.1javacv。 这是pom.xml文件。

    <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacv</artifactId>
        <version>1.3.1</version>
    </dependency>

这是代码

public BufferedImage generateThumbnail(File outputVideoFile) throws IOException {
      BufferedImage bufferedImage = null;
    try {
        FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(outputVideoFile);
        frameGrabber.start();
        Frame grabKeyFrame = frameGrabber.grabKeyFrame();
        Java2DFrameConverter java2DFrameConverter = new Java2DFrameConverter();
        bufferedImage = java2DFrameConverter.convert(grabKeyFrame);
        frameGrabber.stop();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return bufferedImage;
}

这是错误

 java.lang.OutOfMemoryError: Physical memory usage is too high: physicalBytes = 3G > maxPhysicalBytes = 3G
org.bytedeco.javacpp.Pointer.deallocator(Pointer.java:562)
org.bytedeco.javacpp.Pointer.init(Pointer.java:121)
org.bytedeco.javacpp.avcodec$AVPacket.allocate(Native Method)
org.bytedeco.javacpp.avcodec$AVPacket.<init>(avcodec.java:1696)
org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:471)
org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:462)
org.bahmni.module.bahmnimsf.extension.PatientDocumentThumbnailGenerator.generateThumbnail(PatientDocumentThumbnailGenerator.java:40)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)

我尝试将版本升级到1.4,尽管它不起作用。 有人告诉我使用System.gc()也不起作用。

有人可以提出解决方案吗?提前谢谢。

0 个答案:

没有答案