一、 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秒,則不做播放結束的處理。