Передача параметров FFMpeg в FrameGrabber не имеет никакого эффекта вообще - PullRequest
0 голосов
/ 29 января 2019

Я использую 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 выше.

ЛюбойПомогите, пожалуйста?.Спасибо !!

...