登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

KingPlayer一个专注于 Android 视频播放器的基础库,支持无缝切换内核。

jenly1314   2021-01-01 00:25   收藏

KingPlayer

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

功能说明

  • [x] 主要播放相关核心功能
  • [x] 播放器无缝切换
    • [x] MediaPlayer封装实现(SysPlayer)
    • [x] IjkPlayer封装实现
    • [x] ExoPlayer封装实现
    • [x] vlc-android封装实现
  • [ ] 控制图层相关
    • [ ] 待补充...

Gif 展示

GIF.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'

示例

布局示例

    <com.king.player.kingplayer.view.VideoView
        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初始版本

感谢

ijkPlayer

ExoPlayer

vlc-android

MediaPlayer

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlogs: jenly

GitHub: jenly1314

Gitee: jenly1314

加入QQ群: 20867961


项目地址:https://github.com/jenly1314/KingPlayer