Skip to content
dueeeke edited this page Nov 27, 2019 · 44 revisions

简单使用

建议使用之前先把demo跑一下,我对很多使用姿势都进行了演示。

1.添加类库

gradle

dependencies {
    # 必选,内部默认使用系统mediaplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.0'

    # 可选,包含StandardVideoController的实现
    implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.0'

    # 可选,使用exoplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:player-exo:3.2.0'

    # 可选,使用ijkplayer进行解码
    implementation 'com.github.dueeeke.dkplayer:player-ijk:3.2.0'
    
    # 可选,如需要缓存或者抖音预加载功能请引入此库
    implementation 'com.github.dueeeke.dkplayer:videocache:3.2.0'
}

或者将library下载并导入项目中使用

注意:

  • 3.0.4及以后的版本同时支持了androidx和support library。
  • 3.1.2及以后的版本适配了刘海屏。
  • 3.1.3及之后的版本已经将ijkplayer的so库合并到了player-ijk这个库里面了,开发者可通过abiFilters来筛选你需要的so,例如:
ndk {
    abiFilters "armeabi-v7a"
}

3.1.2及之前的版本需要单独引入ijkplayer的so库:

    implementation 'com.github.dueeeke.dkplayer:ijk-armv7a:3.x.x'
    implementation 'com.github.dueeeke.dkplayer:ijk-armv5:3.x.x'
    implementation 'com.github.dueeeke.dkplayer:ijk-arm64:3.x.x'
    implementation 'com.github.dueeeke.dkplayer:ijk-x86:3.x.x'
    implementation 'com.github.dueeeke.dkplayer:ijk-x86_64:3.x.x'

2.添加布局

<com.dueeeke.videoplayer.player.VideoView
        android:id="@+id/player"
        android:layout_width="match_parent"
        android:layout_height="300dp" />

3.设置视频地址、控制器等

videoView.setUrl(URL_VOD); //设置视频地址
StandardVideoController controller = new StandardVideoController(this); 
videoView.setVideoController(controller); //设置控制器
videoView.start(); //开始播放,不调用则不自动播放

4.在Activity

@Override
    protected void onPause() {
        super.onPause();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.resume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.release();
    }
    

    @Override
    public void onBackPressed() {
        if (!videoView.onBackPressed()) {
            super.onBackPressed();
        }
    }

5.在AndroidManifest.xml

<activity
    android:name=".PlayerActivity"
    android:configChanges="orientation|screenSize|keyboardHidden"
    android:screenOrientation="portrait" /> <!-- or android:screenOrientation="landscape"-->

切换播放核心

首先需要引入相关依赖,需要注意,播放器内部默认使用系统MediaPlayer进行解码

全局切换

建议在Application中调用

 VideoViewManager.setConfig(VideoViewConfig.newBuilder()
         //使用使用IjkPlayer解码
         .setPlayerFactory(IjkPlayerFactory.create())
         //使用ExoPlayer解码
         .setPlayerFactory(ExoMediaPlayerFactory.create())
         //使用MediaPlayer解码
         .setPlayerFactory(AndroidMediaPlayerFactory.create())
         .build());

临时切换

调用VideoView中的setPlayerFactory方法,需要在start方法之前调用方可生效

//使用IjkPlayer解码
mVideoView.setPlayerFactory(IjkPlayerFactory.create());
//使用ExoPlayer解码
mVideoView.setPlayerFactory(ExoMediaPlayerFactory.create());
//使用MediaPlayer解码
mVideoView.setPlayerFactory(AndroidMediaPlayerFactory.create());

高级用法

参考demo ╰( ̄▽ ̄)╭

混淆

-keep class com.dueeeke.videoplayer.** { *; }
-dontwarn com.dueeeke.videoplayer.**

# IjkPlayer
-keep class tv.danmaku.ijk.** { *; }
-dontwarn tv.danmaku.ijk.**

# ExoPlayer
-keep class com.google.android.exoplayer2.** { *; }
-dontwarn com.google.android.exoplayer2.**
Clone this wiki locally