Мое лучшее предположение: я как-то не выпускаю фреймы?
Я читаю видео, используя org.bytedeco.javacv.FFmpegFrameGrabber
, и конвертирую кадры в opencv_core.Mat
, затем конвертирую ТЕ в opencv.core.Mat
(потому что мне нужно запустить CascadeClassifier
на нем, а у нас не может быть хороших вещей). Затем я пропускаю кадры, которые уже были обработаны.
Затем он падает.
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x000000010a6c2d21, pid=746, tid=0x0000000000005103
#
# JRE version: Java(TM) SE Runtime Environment (8.0_191-b12) (build 1.8.0_191-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.191-b12 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C [libopencv_java342.dylib+0xed21] Java_org_opencv_core_Mat_n_1delete+0x21
Странная вещь: если я не пропущу ранее обработанные кадры, похоже, все работает нормально! Вот почему я задавался вопросом, происходила ли какая-то гонка, где время, затрачиваемое на обработку кадров, дает системе время, чтобы наверстать упущенное при очистке от мусора?
Код (должен иметь возможность проверить проект и запустить его в IntelliJ, если у вас достаточно длинный файл input.mp4 для его проверки)