ijkPlayer支持https和增加沉浸式帶有so文件,EXOplayer升級到r.2.5.4

IJKPlayer-android

優勢: 對ijkplayer的抽取值刪除了IjkVideoView.java類中幾個無關緊要的變量和方法,其他與ijkplayer本身一摸一樣。這樣ijkplayer升級後,直接拷貝過來,無需任何改動。
對ijkplayer中的EXOplayer模塊一直處於r1.x.x版本升級到r.2.x.x版本。同時ijkplayer-exo2中的IjkExoMediaPlayer.java我增加了RTMP的支持,播放速率,其他的暫時還沒有,如果還想增加,請對照EXOplayer進行增加即可。

效果圖

image

Demo下載

如果點擊下載不了可以從以下找到它
image

首先打開/Bilibili/ijkplayer,利用git命令

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.3'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.3'
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.3'

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章