bytedeco/javacv
View on GitHubFFmpegFrameGrabber casue jvm crash when loading .swf file.
Open
#1,113 opened on Dec 28, 2018
bughelp wanted
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
I use FFmpegFrameGrabber to get image frame from videos. Everything was fine until I load some .swf file in my app. And the jvm is crash. I already try https://github.com/bytedeco/javacv/issues/1055 https://github.com/bytedeco/javacv/issues/605 but it doesn't work for me.
I use maven to manage my project, and the related javacv config is:
<!-- JavaCV start -->
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg</artifactId>
<version>4.0.2-1.4.3</version>
<classifier>linux-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>ffmpeg</artifactId>
<version>4.0.2-1.4.3</version>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>1.4.3</version>
</dependency>
<!-- JavaCV end -->
My system is:Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.78-1 x86_64 GNU/Linux
My java code is:
@Override
public void run() {
FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(videoPath);
frameGrabber.setOption("RW_TIMEOUT".toLowerCase(), "3000000");
frameGrabber.setOption("threads", "1");
avutil.av_log_set_level(avutil.AV_LOG_ERROR);
int frameNumber = 0;
finished = false;
try {
frameGrabber.start();
Frame frame;
long lastTimeStamp = 0L;
while ((frame = frameGrabber.grabImage()) != null) {
long currentTimeStamp = frameGrabber.getTimestamp();
if ((currentTimeStamp - lastTimeStamp) > screenShotFrequency * 1000000) {
//Add the frame to a List.
lastTimeStamp = currentTimeStamp;
}
}
frameGrabber.close();
} catch (Exception e) {
log.info("Exception = {}", e);
} finally {
//some extra logic
}
}
And here is a swf file: