android视频播放器之DKVideoPlayer

news/2024/12/4 17:27:43/

一个老牌子的播放器了,项目可能已经有些日子没有维护了。但是使用效果还是不错的。支持多种视频格式,及重力感应、调节亮度等多种效果。想来想去,还是记录下来,我会在文章的最后注明github地址:
首先引入依赖:

gradlerepositories {mavenCentral()
}dependencies {# 必选,内部默认使用系统mediaplayer进行解码implementation 'xyz.doikki.android.dkplayer:dkplayer-java:3.3.7'# 可选,包含StandardVideoController的实现implementation 'xyz.doikki.android.dkplayer:dkplayer-ui:3.3.7'# 可选,使用exoplayer进行解码implementation 'xyz.doikki.android.dkplayer:player-exo:3.3.7'# 可选,使用ijkplayer进行解码implementation 'xyz.doikki.android.dkplayer:player-ijk:3.3.7'# 可选,如需要缓存或者抖音预加载功能请引入此库implementation 'xyz.doikki.android.dkplayer:videocache:3.3.7'
}

首先需要引入相关依赖,需要注意,播放器内部默认使用系统MediaPlayer进行解码

 VideoViewManager.setConfig(VideoViewConfig.newBuilder()//使用使用IjkPlayer解码.setPlayerFactory(IjkPlayerFactory.create())//使用ExoPlayer解码.setPlayerFactory(ExoMediaPlayerFactory.create())//使用MediaPlayer解码.setPlayerFactory(AndroidMediaPlayerFactory.create()).build());

然后就是在xml中引入使用:

<xyz.doikki.videoplayer.player.VideoViewandroid:id="@+id/player"android:layout_width="match_parent"android:layout_height="300dp" />

设置播放代码:

videoView.setUrl(URL_VOD); //设置视频地址
StandardVideoController controller = new StandardVideoController(this); 
controller.addDefaultControlComponent("标题", false);
videoView.setVideoController(controller); //设置控制器
videoView.start(); //开始播放,不调用则不自动播放

生命周期的回调:

@Overrideprotected void onPause() {super.onPause();videoView.pause();}@Overrideprotected void onResume() {super.onResume();videoView.resume();}@Overrideprotected void onDestroy() {super.onDestroy();videoView.release();}@Overridepublic void onBackPressed() {if (!videoView.onBackPressed()) {super.onBackPressed();}}

在AndroidManifest.xml中

<activityandroid:name=".PlayerActivity"android:configChanges="orientation|screenSize|keyboardHidden"android:screenOrientation="portrait" /> <!-- or android:screenOrientation="landscape"-->

最后就是关于临时切换解码器的代码:

//使用IjkPlayer解码
mVideoView.setPlayerFactory(IjkPlayerFactory.create());
//使用ExoPlayer解码
mVideoView.setPlayerFactory(ExoMediaPlayerFactory.create());
//使用MediaPlayer解码
mVideoView.setPlayerFactory(AndroidMediaPlayerFactory.create());

到此,是正常的代码使用。下面是github地址:
https://github.com/Doikki/DKVideoPlayer/wiki

不过我在使用时,封装了一个工具类,以及添加阿里云的播放器解码。如果需要请看下面的文章:
DKVideoPlayer播放器之AliyunPlayer解码


http://www.ppmy.cn/news/1552336.html

相关文章

【系统架构设计师】真题论文: 论软件开发过程 RUP 及其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2018年 试题1)解题思路论文素材参考RUP 概念和特点RUP 的主要阶段真题题目(2018年 试题1) RUP (Rational Unified Process)是 IBM 公司一款软件开发过程产品,它提出了一整套以UML 为基础的开发准则,…

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 项目介绍 2.0 用户登录功能 3.0 用户管理功能 4.0 影院管理功能 5.0 电影管理功能 6.0 影厅管理功能 7.0 电影排片管理功能 8.0 用户评论管理功能 9.0 用户购票功…

160-两路14位400Msps AD,两路16位400Msps DA FMC子卡模块

一、概述 该板卡可实现2路14bit 400Msps AD 和2路16bit 400Msps DA功能&#xff0c;遵循 VITA 57 标准&#xff0c;板卡可以直接与VME/VXS/AMC/VPX/PCI-E FPGA 载板连接使用&#xff0c;用于模拟信号、中频信号采集&#xff0c;信号发出等应用&#xff0c;是xilinx开发板设计…

Three.js 相机视角的平滑过渡与点击模型切换视角

在 Three.js 中&#xff0c;实现相机视角的平滑过渡和点击模型切换到查看模型视角是一个常见且有用的功能。这种效果不仅能提升用户体验&#xff0c;还能为场景互动添加更多的动态元素。 1. 基本设置 首先&#xff0c;我们需要创建一个基本的 Three.js 场景&#xff0c;包括相…

经典图论之道路与航线

题目 2412: 信息学奥赛一本通T1503-道路和航线 时间限制: 2s 内存限制: 192MB 提交: 37 解决: 16 题目描述 原题来自&#xff1a;USACO 2011 Jan. Gold Farmer John 正在一个新的销售区域对他的牛奶销售方案进行调查。他想把牛奶送到 T 个城镇 &#xff0c;编号为 1 到 T。这些…

springboot/ssm餐厅点餐管理系统Java在线点餐美食论坛系统web美食源码

springboot/ssm餐厅点餐管理系统Java在线点餐美食论坛系统web美食源码 基于springboot(可改ssm)htmlvue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&…

【开发语言】层次状态机(HSM)介绍

层次状态机&#xff08;Hierarchical State Machine, HSM&#xff09;&#xff0c;从基本原理、结构设计、实现方法以及如何结合 Qt 进行具体实现等方面进行分析。 1. 层次状态机的基本原理 层次状态机是一种用于管理复杂系统行为的状态机模型&#xff0c;它通过将状态组织成…

Python 3 教程第33篇(MySQL - mysql-connector 驱动)

Python MySQL - mysql-connector 驱动 MySQL 是最流行的关系型数据库管理系统&#xff0c;如果你不熟悉 MySQL&#xff0c;可以阅读我们的 MySQL 教程。 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。…