将FFMpeg选项传递给FrameGrabber完全没有效果

时间:2019-01-29 08:01:59

标签: android ffmpeg javacv android-ffmpeg javacpp

我正在Android上使用FFMpegFrameGrabber来消耗rtmp实时流,该流以30fps的速度流过,我尝试使用setFrameRate(4)setOption("framerate","4")设置抓取器帧速率,以便解决滞后问题,但均无济于事。我还向抓取器中传递了一组选项,例如("fflags","nobuffer"),这些选项似乎对其他人有用,但是non也起作用。我

    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

请帮忙吗?谢谢!

0 个答案:

没有答案