1. 程式人生 > >ijkPlayer支援https和增加沉浸式帶有so檔案,EXOplayer升級到r.2.8.4

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進行增加即可。此外還對全域性懸浮窗、頁面懸浮窗進行了實現。具體實現方式參考

效果圖

image
image

2018/09/04

增加了字幕顯示,支援ass、srt、stl的格式

1.由於沒有對應的視訊,所以字幕僅僅只是解析完後根據時間顯示出來
如果點選下載不了可以從以下找到它
2.字幕檔案需要是utf-8格式的,不然會解析不出來,可以使用NotePad++進行格式轉換一下

image

git clone https://github.com/Bilibili/ijkplayer.git

然後在你現有的專案裡新建一個module,如圖所示:
image
然後從Bilibili/ijkplayer的專案中拷貝出我們需要的檔案,如圖所示:
image
image
不要忘了在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' }

image
做完之後,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以下變音
image
到了這一步差不多完成了,但是android4.4~android6.0之間沒有沉浸式。這裡用到了我的另一個專案ChangeStatusColor-Android了。使用方法

大功告成了。\(^o^)/~
如果不想麻煩可以clone我的IJKPlayer-android專案下來,直接匯入我的module。