在网上搜索到相关B站ijkPlayer可以播放rtsp的信号流,后满怀欣喜的下载了动态库和开源代码,播放问题不大,但加载时间都在5-10s的延迟实在不能接受,尤其是做直播功能,继续找相关资料,很多人都告诉了怎么去修改源码,需要编译动态库,这对于没有Linux环境的小伙伴简直就是一个字:“难”;在结合相关资料的改进终于解决了延迟问题,为了小伙伴们不再苦恼编译源码,再次特奉上处理方法和源码,有的是用到网上小伙伴们分享的资料,我加以改进只为方便给需要的小伙伴。
也就是网上的解决方法也是设置
- ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "start-on-prepared", 0);
- ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "http-detect-range-support", 0);
- ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 48);
- ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_CODEC, "skip_loop_filter", 8);
- 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);
- 因没有提供已有的动态库可以到我的百度网盘下载动态库(http://download.youkuaiyun.com/download/aoxiangdefeiying/9952263),修改方法也添加好,基本是秒开,最多延迟为2秒完全可以接受
-
添加的方法如下:
VideoOptionModel videoOptionMode0l = new VideoOptionModel(1, "analyzemaxduration", 100); VideoOptionModel videoOptionMode02 = new VideoOptionModel(1, "probesize", 10240); VideoOptionModel videoOptionMode03 = new VideoOptionModel(1, "flush_packets", 1); VideoOptionModel videoOptionMode04 = new VideoOptionModel(4, "packet-buffering", 0); VideoOptionModel videoOptionMode05 = new VideoOptionModel(4, "framedrop", 1); VideoOptionModel videoOptionMode06 = new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "framedrop", 1); VideoOptionModel videoOptionMode07 = new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "rtsp_transport", "tcp"); List<VideoOptionModel> list1 = new ArrayList<VideoOptionModel>(); list1.add(videoOptionMode0l); list1.add(videoOptionMode02); list1.add(videoOptionMode03); list1.add(videoOptionMode04); list1.add(videoOptionMode05); list1.add(videoOptionMode06); list1.add(videoOptionMode07); GSYVideoManager.instance().setOptionModelList(list1);
-