Я использую FFMpegFrameGrabber
на Android для потребления живого потока rtmp, который передает со скоростью 30 кадров в секунду, я попытался установить частоту кадров граббера, используя setFrameRate(4)
и setOption("framerate","4")
, чтобы устранить задержку, но ниработал.Я также передал набор параметров в граббер, такой как ("fflags","nobuffer")
, который, кажется, работает для других, но не имеет эффекта тоже.I
grabber = FFmpegFrameGrabber.createDefault(this.listener.getVideoUrlOrPath());
grabber.setTimeout(Math.abs((int) GlobalHandler.configMnger.getConnectionTimeout() / 1000));
grabber.setOption("fflags", "nobuffer");
grabber.setOption("nobuffer", "1");
grabber.setOption("max_delay", "0");
grabber.setOption("hwaccel", "auto");
grabber.setOption("vsync", "0");
grabber.setOption("r", "4");
grabber.setOption("preset", "ultrafast");
grabber.setOption("tune", "zerolatency");
grabber.setOption("analyzeduration", "0");
grabber.setOption("fflags", "flush_packets");
grabber.setOption("fflags", "nofillin");
grabber.setOption("fflags", "noparse");
grabber.setOption("flags", "low_delay");
grabber.setOption("framedrop", "1");
grabber.setOption("fflags", "discardcorrupt");
grabber.setOption("framerate", "4");
grabber.setFrameRate(4);
grabber.setVideoCodec(avcodec.AV_CODEC_ID_H264);
grabber.start();
Frame image;
while((image=grabber.grabImage())!=null){
...
}
Обратите внимание, что удаление всех опций дает идентичные результаты, где единственная рабочая опция, которую я имею здесь, это timout
, которая устанавливается с помощью функции setTimeout
выше.
ЛюбойПомогите, пожалуйста?.Спасибо !!