ArtPlayer

简介

Kotlin实现的视频播放器,将MediaPlayer与VideoView解耦合,支持切换播放器内核(如ExoPlayer和ijkPlayer),支持自定义控制视图,提供MediaPlayerManager实现全屏模式,小屏幕模式等。

特点

ijkPlayer支持

ExoPlayer支持

全屏,小屏播放

完全自定义UI

静音

循环播放

倍速播放(IjkPlayer支持)

多播放器同时播放

Raw/Assets,本地视频文件播放支持

Activity生命周期感知,实现了onPause暂停播放,onDestory停止播放并释放资源

手势操作支持(小窗:单指拖动,双指缩放;全屏:音量,亮度,快进)

重力感应支持

开始使用

核心依赖

implementation 'org.salient.artvideoplayer:artplayer-core:1.1.0'

选择使用ExoPlayer

implementation "org.salient.artvideoplayer:artplayer-exo:1.1.0"

选择使用IjkPlayer

implementation 'org.salient.artvideoplayer:artplayer-ijk:1.1.0'

implementation "org.salient.artvideoplayer:artplayer-armv7a:1.1.0"

需要支持不同的cpu架构

implementation "org.salient.artvideoplayer:artplayer-armv5:1.1.0"

implementation "org.salient.artvideoplayer:artplayer-x86:1.1.0"

//下面两个需要minSdk version >= 21

implementation "org.salient.artvideoplayer:artplayer-arm64:1.1.0"

implementation "org.salient.artvideoplayer:artplayer-x86_64:1.1.0"

使用方法

kotlin

import org.salient.artplayer.VideoView

val videoView = VideoView(context)

videoView.mediaPlayer = SystemMediaPlayer().apply{

setDataSource(context, Uri.parse("http://vfx.mtime.cn/Video/2018/07/06/mp4/180706094003288023.mp4"))

}

videoView.prepare()

xml

android:id="@+id/video_view"

android:layout_width="match_parent"

android:layout_height="200dp"/>

AndroidManifest.xml

android:name=".YourActivity"

android:configChanges="orientation|screenSize" />

Activity

//拦截全屏时的返回事件

override fun onBackPressed() {

if (MediaPlayerManager.blockBackPress(this)) {

return

}

super.onBackPressed()

}

设置封面

//绑定封面图片资源到VideoView的`cover`字段

Glide.with(context)

.load("http://img5.mtime.cn/mg/2018/07/06/093947.51483272.jpg")

.into(videoView.cover);

支持

请在 github 上公开讨论技术问题

详细的说明文档请查看Wiki

构建环境

Kotlin 1.37.2

Java 1.8

Android Studio 3.6.0

Gradle 5.6.4

IjkPlayer 0.8.8

ExoPlayer 2.11.3

作者

联系方式

License

Copyright 2018 maiwenchang

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

android视频播放器ui,ArtVideoPlayer 一个灵活的Android视频播放器,支持全屏,小屏播放...相关推荐

  1. Android fragment 页面,[38→100]一个常规的Android页面模型:NetFragment

    问题场景 Android开发中大部分页面都包含如下逻辑: 进入页面,加载网络数据,显示加载页面 加载完成后,有以下几种情况: 正常返回,有有效数据,显示"有效界面" 正常返回,有效 ...

  2. android log耗性能吗,一个高性能的Android日志库

    clue 一个高性能的Android日志库. 为什么性能高 通常的Android日志库, 为了获取到class名, 方法名, 行号, 都是通过以下API实现的: StackTraceElement[] ...

  3. Wine运行器帮助——使用Qemu User运行Wine(理论支持全架构)

    提醒 Qemu 的转换效率较低,如果可以的话建议使用其它方案以提升运行效率 此方案理论上支持全架构(amd64.arm64.mips64.loongarch64.riscv64.ppc64.s390x ...

  4. python计算时间装饰器_python 写一个计算运行时间的装饰器

    面试题之中的一个. 写一个装饰器wraps,它接收一个參数t.假设函数运行时间超过1秒,输出"bad",否则输出"goods". 首先,计算函数的运行时间: i ...

  5. 自己写了一个多行文本溢出文字补全的小库, 说不定你会用得到的

    有些时候产品会有这么个需求,希望给文章或者帖子给一个摘要,最多3行,或者其它行数,超出3行会补上'...'.当然这种很简单,用css可以搞定.但是遇上要求多点的产品,希望补上的是'...查看全文',这 ...

  6. 使用AVPlayer自定义支持全屏的播放器(一)

    前言 最近在项目中,遇到了视频播放的需求,直接使用系统封装的播放器太过于简单,不能很好的满足项目要求,于是花时间研究了一下,使用AVPlayer来自定义播放器.     本视频播放器主要自定义了带缓冲 ...

  7. 网格组布局管理器(GridBagLayout)网格包布局管理器

    网格组布局管理器GridBagLayout(又称为网格包布局管理器),是GridLayout的加强版,它是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件沿垂直.水平或它们的基线对齐.每个Gr ...

  8. android 屏幕录制方案,ShareREC for Android全系统录屏原理解析

    本文是Mob开发者平台技术副总监余勋杰基于MediaProjection实现Android全系统录屏功能的原理解析,包括了结合MediaRecorder和MediaCodec两套方案. 文 / 余勋杰 ...

  9. sony xz1c android 10,小屏旗舰再现江湖,索尼XZ1c曝光

    原标题:小屏旗舰再现江湖,索尼XZ1c曝光 在你眼中,小屏手机的定位是怎样的呢?有人认为5寸手机就已经算很小的屏幕了,尤其在这个全面屏手机当道的年代,5寸的手机还不算小么?自从大屏手机兴起来之后,有不 ...

最新文章

  1. 用OpenCV4实现图像的超分别率
  2. 《windows中GSX的管理》之四——cmware-cmd实例
  3. [转载]读史记札记23:并不是每次跌倒都能够重新站起来
  4. Python技巧:不要在for与while循环后写else块
  5. 闪烁点击效果css,CSS3自定义闪烁动画效果实例
  6. 隐马尔可夫模型通俗导论
  7. 求解二次规划问题——外点罚函数法/内点罚函数法
  8. 最坑爹的硬盘:希捷ST2000DM001
  9. 我的编程之路点滴记录(五)
  10. 20201220苹果黑解开放-黑解教程 最新iccid
  11. 王绍伟:你不是非得和别人一样---转载
  12. linux命令发请求,Linux命令发送Http的get或post请求(curl和wget两种方法)
  13. platEMO:一款强大的多目标优化工具(MATLAB)
  14. mac系统清理优化软件iMacCleaner Mac中文版
  15. 打败你的不是现实,是时间管理|互联网时代的时间管理术
  16. 给mongodb设置密码
  17. uniapp学习教程
  18. 服务端svn配置及首次本地项目上传svn
  19. PMP试题 | 每日一练,快速提分(十一)
  20. Bash和shell

热门文章

  1. 华为诺亚方舟实验室—推荐系统中的前沿技术研究与落地报告
  2. 一文带你读懂大疆精灵4多光谱版无人机
  3. html任务管理,任务管理
  4. 软件质量管理的方法、工具和保证
  5. 爬虫的基本原理:爬虫概述及爬取过程
  6. Jenkins+Fastlane+蒲公英+钉钉
  7. 手把手教你使用patch-package给npm包打补丁
  8. CSI SAP2000 v17.2.0.1140 1CD结构有限元分析
  9. 网上最靠谱的赚钱方法,看看这六个哪个适合你!
  10. 建网站应该选择自己建站还是在线建站?