JavaCV метод захвата кадров задерживает и возвращает старые кадры - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь создать видеопроигрыватель на Java, используя JavaCV и его класс FFmpegFrameGrabber.Проще говоря, внутри цикла я использую

.grab () , чтобы получить рамку, а затем рисую ее на панели

Проблема в том, что игрок задерживается. Например, после 30 секунд проходит, в видео только 20 секунд.

Источник в порядке.Другие игроки могут нормально воспроизводить поток.Возможно, проблема в длительном времени печати. ​​

Что я не понимаю, так это: «почему метод .grab () возвращает мне кадр 10 секунд назад?» Разве это не должнопросто захватить кадр, который транслируется в данный момент?

(Извините, что не предоставил рабочий код, он разбросан по разным огромным классам)

Я использую следующие параметры захвата (выбранные некоторымидругой коллега):

grabber.setImageHeight(480);
grabber.setImageWidth(640);
grabber.setOption("reconnect", "1");
grabber.setOption("reconnect_at_eof", "1");
grabber.setOption("reconnect_streamed", "1");
grabber.setOption("reconnect_delay_max", "2");
grabber.setOption("preset", "veryfast");
grabber.setOption("probesize", "192");
grabber.setOption("tune", "zerolatency");
grabber.setFrameRate(30.0);
grabber.setOption("buffer_size", "" + this.bufferSize);
grabber.setOption("max_delay", "500000");
grabber.setOption("stimeout", String.valueOf(6000000));
grabber.setOption("loglevel", "quiet");
grabber.start();

Спасибо

...