JavaCV抓帧方法延迟并返回旧帧

时间:2019-01-27 19:24:24

标签: java opencv ffmpeg javacv

我正在尝试使用JavaCV及其FFmpegFrameGrabber类在Java中创建视频播放器。简而言之,在循环中,我使用

.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();

谢谢

0 个答案:

没有答案