博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android无缝切换播放器,KingPlayer一个专注于 Android 视频播放器的基础库,支持无缝切换内核。...
阅读量:4985 次
发布时间:2019-06-12

本文共 2588 字,大约阅读时间需要 8 分钟。

KingPlayer

KingPlayer 一个专注于 Android 视频播放器(IjkPlayer、ExoPlayer、VlcPlayer、SysPlayer)的基础库,无缝切换内核。

功能说明

[x] 主要播放相关核心功能

[x] 播放器无缝切换

[x] MediaPlayer封装实现(SysPlayer)

[x] IjkPlayer封装实现

[x] ExoPlayer封装实现

[x] vlc-android封装实现

[ ] 控制图层相关

[ ] 待补充...

Gif 展示

30b0055693ad905a79af12f061be558b.gif

录制的gif效果有点不清晰,可以下载App查看详情。

引入

gradle:

使用 SysPlayer (Android自带的MediaPlayer)

//KingPlayer基础库,内置SysPlayer

implementation 'com.king.player:king-player:1.0.0-beta1'

使用 IjkPlayer

//KingPlayer基础库(必须)

implementation 'com.king.player:king-player:1.0.0-beta1'

//IjkPlayer

implementation 'com.king.player:ijk-player:1.0.0-beta1'

// 根据您的需求选择ijk模式的so

implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'

// Other ABIs: optional

implementation 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'

implementation 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'

implementation 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'

implementation 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'

使用 ExoPlayer

//KingPlayer基础库(必须)

implementation 'com.king.player:king-player:1.0.0-beta1'

//ExoPlayer

implementation 'com.king.player:exo-player:1.0.0-beta1'

使用 VlcPlayer

//KingPlayer基础库(必须)

implementation 'com.king.player:king-player:1.0.0-beta1'

//VlcPlayer

implementation 'com.king.player:vlc-player:1.0.0-beta1'

示例

布局示例

android:id="@+id/videoView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

代码示例

//初始化一个视频播放器(IjkPlayer、ExoPlayer、VlcPlayer、SysPlayer)

videoView.player = IjkPlayer(context)

//初始化数据源

val dataSource = DataSource(url)

videoView.setDataSource(dataSource)

videoView.setOnSurfaceListener(object : VideoView.OnSurfaceListener {

override fun onSurfaceCreated(surface: Surface, width: Int, height: Int) {

LogUtils.d("onSurfaceCreated: $width * $height")

videoView.start()

}

override fun onSurfaceSizeChanged(surface: Surface, width: Int, height: Int) {

LogUtils.d("onSurfaceSizeChanged: $width * $height")

}

override fun onSurfaceDestroyed(surface: Surface) {

LogUtils.d("onSurfaceDestroyed")

}

})

//缓冲更新监听

videoView.setOnBufferingUpdateListener {

LogUtils.d("buffering: $it")

}

//播放事件监听

videoView.setOnPlayerEventListener { event, bundle ->

}

//错误事件监听

videoView.setOnErrorListener { event, bundle ->

}

//------------ 控制相关

//开始

videoView.start()

//暂停

videoView.pause()

//进度调整到指定位置

videoView.seekTo(pos)

//停止

videoView.stop()

//释放

videoView.release()

//重置

videoView.reset()

更多使用详情,请查看app中的源码使用示例或直接查看API帮助文档

其他

需使用JDK8+编译,在你项目中的build.gradle的android{}中添加配置:

compileOptions {

targetCompatibility JavaVersion.VERSION_1_8

sourceCompatibility JavaVersion.VERSION_1_8

}

版本记录

v1.0.0-beta1:2020-12-28

KingPlayer初始版本

感谢

关于我

Name: Jenly

CNBlogs: jenly

转载地址:http://nrnrp.baihongyu.com/

你可能感兴趣的文章
关于ubuntu的图形界面的关闭与开启
查看>>
Codeforces Round #400 E. The Holmes Children
查看>>
hdu 1759 Matrix Revolution(矩阵转BFS)
查看>>
LintCode-88.最近公共祖先
查看>>
WCF
查看>>
861. Score After Flipping Matrix
查看>>
青蛙的约会(扩展欧几里德)
查看>>
380. Insert Delete GetRandom O(1)
查看>>
6w5:第六周程序填空题2
查看>>
多线程——几中常用的线程池
查看>>
MTK 修改开进进入Recovery模式引导界面字体大小
查看>>
凯撒密码、GDP格式化输出、99乘法表
查看>>
mysql yum安装
查看>>
Sublime html <head>自动补全
查看>>
模拟瀑布流
查看>>
SOL的补充
查看>>
获取textview行数
查看>>
python列表操作
查看>>
leetcode 53 最大子序和 (Maximum Subarray)
查看>>
FZU 1919 -- K-way Merging sort(记忆化搜索)
查看>>