ijkplayer和ffplay在打开rtmp串流视频时,大多数都会遇到5~10秒的延迟,在ffplay播放时,如果加上-fflags nobuffer可以缩短播放的rtmp视频延迟在1s内,而在ijkVideoView中加入
[java] view plain copy
- IjkMediaPlayer ijkMediaPlayer = null;
- ijkMediaPlayer = new IjkMediaPlayer();
- ijkMediaPlayer.setOption(1, “analyzemaxduration”, 100L);
- ijkMediaPlayer.setOption(1, “probesize”, 10240L);
- ijkMediaPlayer.setOption(1, “flush_packets”, 1L);
- ijkMediaPlayer.setOption(4, “packet-buffering”, 0L);
- ijkMediaPlayer.setOption(4, “framedrop”, 1L);
这几个选项设置,可以让rtmp加载时间从5~10秒缩短到1s以内,以达到秒开且低延迟的目的。
同样,只要是基于ffmpeg中的ffplay播放器,都可以通过加上类似设置达到这个效果。比如在PLDroidPlayer当中,也可以加入这个选项:
[java] view plain copy
- AVOptions options = new AVOptions();
- options.setInteger(AVOptions.VALUE_FFLAGS_NOBUFFER, 1);
- options.setInteger(AVOptions.KEY_PROBESIZE,10240);