特性
- 支持直播和点播。
- 支持调整显示比例:默认、原始大小、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 演示 | 列表播放 | 扩展功能 | 画中画 |
|
|
|
|