bytedeco/javacv
View on GitHubdo we need to call frame.close() after calling FFmpegFrameGrabber.grabImage() ?
Open
#2,175 opened on Jan 25, 2024
help wantedquestion
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
i try to get image per second from a video and i notice my java heap keep increasing and eventually causing OOM after processing more than 10 videos.
my sample code
try (FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(inputStream)) {
frameGrabber.start();
long lengthInSecond = frameGrabber.getLengthInTime() / NANO_SECONDS;
for (int i = 0; i < lengthInSecond; i++) {
frameGrabber.setVideoTimestamp(i * NANO_SECONDS);
try (Frame frame = frameGrabber.grabImage()) {
if (frame != null) {
BufferedImage bufferedImage;
try (Java2DFrameConverter converter = new Java2DFrameConverter()) {
if ((bufferedImage = converter.convert(frame)) != null) {
results.add(getColorHistogram(bufferedImage));
}
}
}
}
}
frameGrabber.stop();
}