我们正在使用javacv
库来创建视频缩略图。我们可以创建缩略图。但是当我们上传更多视频(20 to 30 of 10MB to 40MB)
时,应用程序会抛出掉MoMemoryError。
我们正在使用1.3.1
版javacv
。
这是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()
也不起作用。
有人可以提出解决方案吗?提前谢谢。