• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MXVideo: 基于饺子播放器,Kotlin开发的播放器

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

MXVideo

开源软件地址:

https://gitee.com/zhangmengxiong/MXVideo

开源软件介绍:

MXVideo

介绍

基于饺子播放器、kotlin编写的 Android 开源播放器, 开箱即用,欢迎提 issue 和 pull request

简书相关介绍(待完善):https://www.jianshu.com/nb/50294642

最新版本:

Image textImage textImage textImage text

功能特性

  • 任意播放器内核(包含开源IJK、谷歌Exo、阿里云等等)
  • 单例播放,只能同时播放一个节目
  • 0代码集成全屏功能
  • 可以调节音量、屏幕亮度
  • 可以注册播放状态监听回调
  • 播放器高度可以根据视频高度自动调节
  • 播放器支持设置宽高比,设置宽高比后,高度固定。
  • 自动保存与恢复播放进度(可关闭)
  • 支持循环播放、全屏时竖屏模式、可关闭快进快退功能、可关闭全屏功能、可关闭非WiFi环境下流量提醒
1、通过 dependence 引入MXVideo
    dependencies {	        implementation 'com.gitee.zhangmengxiong:MXVideo:x.x.x'    }
2、页面集成
        <com.mx.video.MXVideoStd            android:id="@+id/mxVideoStd"            android:layout_width="match_parent"            android:layout_height="wrap_content" />
    // Activity或者Fragment中生命周期变更,处理进入后台/前台时的暂停/续播功能    override fun onStart() {        mxVideoStd.onStart()        super.onStart()    }        override fun onStop() {        mxVideoStd.onStop()        super.onStop()    }
3、开始播放
// 设置播放占位图Glide.with(this).load("http://www.xxx.com/xxx.png").into(mxVideoStd.getPosterImageView())// 默认从上一次进度播放mxVideoStd.setSource(MXPlaySource(Uri.parse("https://aaa.bbb.com/xxx.mp4"), "标题1"))mxVideoStd.startPlay()// 从头开始播放mxVideoStd.setSource(MXPlaySource(Uri.parse("https://aaa.bbb.com/xxx.mp4"), "标题1"), seekTo = 0)mxVideoStd.startPlay()// 从第10秒开始播放mxVideoStd.setSource(MXPlaySource(Uri.parse("https://aaa.bbb.com/xxx.mp4"), "标题1"), seekTo = 10)mxVideoStd.startPlay()

MXPlaySource 可选参数说明:

参数说明默认值
title标题""
headerMap网络请求头部null
changeOrientationWhenFullScreen全屏时是否需要变更Activity方向,如果 = null,会自动根据视频宽高来判断null
isLooping是否循环播放false
enableSaveProgress是否存储、读取播放进度true
isLiveSource是否直播源,当时直播时,不显示进度,无法快进快退暂停false
4、监听播放进度
mxVideoStd.addOnVideoListener(object : MXVideoListener() {            // 播放状态变更            override fun onStateChange(state: MXState) {            }            // 播放时间变更            override fun onPlayTicket(position: Int, duration: Int) {            }        })
5、全屏返回 + 释放资源

这里MXVideo默认持有当前播放的MXVideoStd,可以使用静态方法操作退出全屏、释放资源等功能。

也可以直接使用viewId:mxVideoStd.isFullScreen(),mxVideoStd.isFullScreen(),mxVideoStd.release() 等方法。

    override fun onBackPressed() {        if (MXVideo.isFullScreen()) {            MXVideo.gotoNormalScreen()            return        }        super.onBackPressed()    }    override fun onDestroy() {        MXVideo.releaseAll()        super.onDestroy()    }

功能相关

  • 切换播放器内核
// 默认MediaPlayer播放器,库默认内置com.mx.video.player.MXSystemPlayer// 谷歌的Exo播放器com.mx.mxvideo_demo.player.MXExoPlayer// IJK播放器com.mx.mxvideo_demo.player.MXIJKPlayer// 设置播放源是可以设置内核,默认 = MXSystemPlayermxVideoStd.setSource(MXPlaySource(Uri.parse("xxx"), "xxx"), player = MXSystemPlayer::class.java)
  • 视频渲染旋转角度
// 默认旋转角度 = MXOrientation.DEGREE_0mxVideoStd.setOrientation(MXOrientation.DEGREE_90)
  • 视频填充规则
// 强制填充宽高 MXScale.FILL_PARENT// 根据视频大小,自适应宽高 MXScale.CENTER_CROP// 默认填充规则 = MXScale.CENTER_CROPmxVideoStd.setScaleType(MXScale.CENTER_CROP)
  • MXVideoStd 控件宽高约束

在页面xml中添加,layout_width一般设置match_parent,高度wrap_content

    <com.mx.video.MXVideoStd        android:id="@+id/mxVideoStd"        android:layout_width="match_parent"        android:layout_height="wrap_content" />

可以设置任意宽高比,如果设置宽高比,则控件高度需要设置android:layout_height="wrap_content",否则不生效。

当取消约束、MXVideo高度自适应、填充规则=MXScale.CENTER_CROP时,控件高度会自动根据视频宽高自动填充高度

// MXVideoStd控件设置宽高比= 16:9mxVideoStd.setDimensionRatio(16.0 / 9.0)// MXVideoStd控件设置宽高比= 4:3mxVideoStd.setDimensionRatio(4.0 / 3.0)// 取消约束mxVideoStd.setDimensionRatio(0.0)
  • 进度跳转
// 进度单位:秒  可以在启动播放后、错误或播完之前调用mxVideoStd.seekTo(55)
  • 设置不能快进快退
// 播放前设置 默认=truemxVideoStd.getConfig().canSeekByUser = false
  • 设置不能全屏
// 播放前设置 默认=truemxVideoStd.getConfig().canFullScreen = false
  • 设置不显示控件右上角时间
// 播放前设置 默认=truemxVideoStd.getConfig().canShowSystemTime = false
  • 设置不显示控件右上角电量图
// 播放前设置 默认=truemxVideoStd.getConfig().canShowBatteryImg = false
  • 设置关闭WiFi环境播放前提醒
// 播放前设置 默认=truemxVideoStd.getConfig().showTipIfNotWifi = false
  • 设置播放完成后自动退出全屏
// 播放前设置 默认=truemxVideoStd.getConfig().gotoNormalScreenWhenComplete = true
  • 设置播放错误后自动退出全屏
// 播放前设置 默认=truemxVideoStd.getConfig().gotoNormalScreenWhenError = true
  • 设置屏幕方向根据重力感应自动进入全屏、小屏模式
// 播放前设置 默认=falsemxVideoStd.getConfig().autoRotateBySensor = true

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap