开源播放器 ijkplayer (六) :Android 下使用 ijkplayer 异常处理思路

一、 java.lang.IllegalStateException: mpjni: setOptionLong: null mp

根据已查到的资料看,目前是ijk内部的问题,只能通过try&catch的方式进行处理。

参考:https://github.com/CarGuo/GSYVideoPlayer/issues/654

参考:https://github.com/bilibili/ijkplayer/issues/2136

二、暂停的时候,退到后台再回到前台,画面黑屏

1. 可以在暂停的时候,通过TextureView.getBitmap(point.x, point.y);获取到暂停的画面,用ImageView显示它,在onSurfaceTextureUpdated的时候隐藏ImageView,来实现画面的衔接。

2. 暂停时绘制静态画面多TextureView的Surface上,详细参考GSYVideoPlayer

三、ijk在切换URL时报400错误(http与https域名共用)

ijkplayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "dns_cache_clear", 1);

四、ijkplayer onComplete异常回调

现象描述:

在Android手机上,播放视频,在播放的时候把网络关闭,当player把buffer播放完成后,会回调onCompletion和onError方法,但是视频实际上还没播放完毕。

ijkplayer 项目此问题 Issues汇总:

https://github.com/bilibili/ijkplayer/issues/193

https://github.com/bilibili/ijkplayer/issues/525

https://github.com/bilibili/ijkplayer/issues/1289

https://github.com/bilibili/ijkplayer/issues/1580

优化方案:

增加播放失败的重试机制,将-10000这个错误进行处理,给用户重试的机制。

同时,如果收到播放完成的回调的时候,增加判断逻辑,如果当前播放的时长距真正结束超过5秒,则不做播放结束的处理。 

原文地址:https://www.cnblogs.com/renhui/p/10443937.html