特性

  • 支持直播和点播。
  • 支持调整显示比例:默认、原始大小、16:9、4:3、铺满屏幕、居中裁剪。
  • 支持滑动调节播放进度、声音、亮度;双击播放、暂停;保存播放进度。
  • 支持边播边缓存,使用了AndroidVideoCache。
  • 支持弹幕,使用了DanmakuFlameMaster。
  • 支持 Https,rtsp,concat 协议。
  • 支持播放本地视频以及 raw 和 assets 视频。
  • 支持重力感应自动进入/退出全屏以及手动进入/退出全屏,全屏状态下可锁定。
  • 完美实现列表播放(RecyclerView 和 ListView),列表自动播放。
  • 支持列表小窗全局悬浮播放,Android 8.0 画中画功能。
  • 支持连续播放一个列表的视频。
  • 支持广告播放。
  • 支持清晰度切换。
  • 支持扩展自定义播放内核,MediaPlayer、ExoPlayer、vitamio 等。
  • 支持完全自定义控制层。
  • 支持多路播放器同时播放,没有任何控制 UI 的纯播放
  • 抖音 demo。

使用

1.添加类库

gradle

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    # 必选,可兼容市面上绝大部分设备
    implementation 'com.github.dueeeke.dkplayer:dkplayer-java:2.5.4'
    implementation 'com.github.dueeeke.dkplayer:dkplayer-armv7a:2.5.4'

    # 可选,用于兼容一些其他的 CPU 架构
    implementation 'com.github.dueeeke.dkplayer:dkplayer-armv5:2.5.4'
    implementation 'com.github.dueeeke.dkplayer:dkplayer-arm64:2.5.4'
    implementation 'com.github.dueeeke.dkplayer:dkplayer-x86:2.5.4'
    implementation 'com.github.dueeeke.dkplayer:dkplayer-x86_64:2.5.4'

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

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

2.添加布局

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

3.设置视频地址、标题、Controller 等

ijkVideoView.setUrl(URL_VOD); //设置视频地址
ijkVideoView.setTitle("网易公开课-如何掌控你的自由时间"); //设置视频标题
StandardVideoController controller = new StandardVideoController(this);
ijkVideoView.setVideoController(controller); //设置控制器,如需定制可继承 BaseVideoController
ijkVideoView.start(); //开始播放,不调用则不自动播放

//高级设置(可选,须在 start()之前调用方可生效)
PlayerConfig playerConfig = new PlayerConfig.Builder()
        .enableCache() //启用边播边缓存功能
        .autoRotate() //启用重力感应自动进入/退出全屏功能
        .enableMediaCodec()//启动硬解码,启用后可能导致视频黑屏,音画不同步
        .usingSurfaceView() //启用 SurfaceView 显示视频,不调用默认使用 TextureView
        .savingProgress() //保存播放进度
        .disableAudioFocus() //关闭 AudioFocusChange 监听
        .setLooping() //循环播放当前正在播放的视频
        .build();
ijkVideoView.setPlayerConfig(playerConfig);

4.在Activity中

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

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

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


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

5.在AndroidManifest.xml中

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

其他 API 的用法参照 demo

截图

API 演示

列表播放

扩展功能

画中画

 

|

|

|