当前位置: 首页 > article >正文

android视频播放器之DKVideoPlayer

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

gradle

repositories {
    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.VideoView
        android: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(); //开始播放,不调用则不自动播放

生命周期的回调:

@Override
    protected void onPause() {
        super.onPause();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.resume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.release();
    }
    

    @Override
    public void onBackPressed() {
        if (!videoView.onBackPressed()) {
            super.onBackPressed();
        }
    }

在AndroidManifest.xml中

<activity
    android: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.kler.cn/a/421748.html

相关文章:

  • IIC相关介绍及oled实验(二)
  • 基于链表的基础笔试/面试题
  • Python实现网站资源批量下载【可转成exe程序运行】
  • 前端:localstorage, session
  • 3.4 朴素贝叶斯算法
  • koa中间件
  • C语言编程1.21波兰国旗问题
  • 【VPX312-0】基于3U VPX总线架构的XC7VX690T FPGA数据预处理平台
  • 机器学习概述,特征工程简述2.1——2.3
  • QT实战-qt各种菜单样式实现
  • Milvus×OPPO:如何构建更懂你的大模型助手
  • 【王道计算机组成原理·个人笔记】开头
  • leetcode 之 二分查找(java)(2)
  • 微软表示不会使用你的 Word、Excel 数据进行 AI 训练
  • 云服务器重装系统后 一些报错与解决[ vscode / ssh / 子用户]
  • case的用法3
  • 软件工程——期末复习(2)
  • JavaSE学习心得(APL与算法篇)
  • 机器学习面试八股总结
  • Java学习笔记(10)--面向对象基础
  • Qt桌面应用开发 第十天(综合项目二 翻金币)
  • Spring 邮件发送
  • 基于开源云原生数据仓库 ByConity 体验多种数据分析场景
  • ThingsBoard集成外部工单系统方案
  • 数据仓库的概念
  • Qt 2D绘图之三:绘制文字、路径、图像、复合模式