ijkPlayer支援https和增加沉浸式帶有so檔案,EXOplayer升級到r.2.8.4
QQ交流群:611902811,有興趣的可以交流
IJKPlayer-android
優勢: 對ijkplayer的抽取值刪除了IjkVideoView.java類中幾個無關緊要的變數和方法,其他與ijkplayer本身一摸一樣。這樣ijkplayer升級後,直接拷貝過來,無需任何改動。
對ijkplayer中的EXOplayer模組一直處於r1.x.x版本升級到r.2.x.x版本。同時ijkplayer-exo2中的IjkExoMediaPlayer.java我增加了RTMP的支援,播放速率,其他的暫時還沒有,如果還想增加,請對照EXOplayer進行增加即可。此外還對全域性懸浮窗、頁面懸浮窗進行了實現。具體實現方式參考
效果圖
2018/09/04
增加了字幕顯示,支援ass、srt、stl的格式
1.由於沒有對應的視訊,所以字幕僅僅只是解析完後根據時間顯示出來
如果點選下載不了可以從以下找到它
2.字幕檔案需要是utf-8格式的,不然會解析不出來,可以使用NotePad++進行格式轉換一下
git clone https://github.com/Bilibili/ijkplayer.git
然後在你現有的專案裡新建一個module,如圖所示:
然後從Bilibili/ijkplayer的專案中拷貝出我們需要的檔案,如圖所示:
不要忘了在module的build.gradle中依賴所需的依賴
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.4'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4'
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.4'
如果想支援EXOplayer r2.x.x版本依賴
compile 'org.dync.kathline:ijkplayer-exo2:0.8.4'
//有衝突可以使用下面的去除重複
compile ('org.dync.kathline:ijkplayer-exo2:0.8.4'){
exclude group : 'tv.danmaku.ijk.media',
module: 'ijkplayer-java'
}
做完之後,IjkVideoView.java檔案會出錯,但是我們只要刪除這些報錯的變數和方法就好了,做到這步之後,我們開始播放了。
此外我們可以給IjkVideoView.java增加幾個額外的方法。這裡我提供我的:
///////////////////////////////額外增加的方法//////////////////////////////////
/**
* 參考{@link IRenderView#AR_ASPECT_FIT_PARENT}、{@link IRenderView#AR_ASPECT_FILL_PARENT}、{@link IRenderView#AR_ASPECT_WRAP_CONTENT}
* {@link IRenderView#AR_16_9_FIT_PARENT}、{@link IRenderView#AR_4_3_FIT_PARENT}
* 設定播放區域拉伸型別
*/
public void setAspectRatio(int aspectRatio) {
for (int i = 0; i < s_allAspectRatio.length; i++) {
if (s_allAspectRatio[i] == aspectRatio) {
mCurrentAspectRatioIndex = i;
if (mRenderView != null) {
mRenderView.setAspectRatio(mCurrentAspectRatio);
}
break;
}
}
}
/**
* 設定旋轉角度
*/
public void setPlayerRotation(int rotation) {
mVideoRotationDegree = rotation;
if (mRenderView != null) {
mRenderView.setVideoRotation(mVideoRotationDegree);
}
}
/**
* 設定播放速率,這裡僅對支援IjkMediaPlayer播放器
*
* @param rate 0.2~2.0之間
*/
public void setPlayRate(@FloatRange(from=0.2, to=2.0)float rate) {
if(mMediaPlayer instanceof IjkMediaPlayer){
((IjkMediaPlayer)mMediaPlayer).setSpeed(rate);
}else {
Toast.makeText(getContext(), getResources().getString(R.string.TrackType_unknown), Toast.LENGTH_SHORT).show();
}
}
其中setPlayRate()方法需要在createPlayer()方法中設定如下程式碼:
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", 1);
這幾句程式碼的含義是設定倍速後播放音調不會在android6.0以下變音
到了這一步差不多完成了,但是android4.4~android6.0之間沒有沉浸式。這裡用到了我的另一個專案ChangeStatusColor-Android了。使用方法。
大功告成了。\(^o^)/~
如果不想麻煩可以clone我的IJKPlayer-android專案下來,直接匯入我的module。