FFmpeg开发笔记(九十九)基于Kotlin的国产开源播放器DKVideoPlayer

在Android平台上,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看网络视频》。

除此以外,DKVideoPlayer也是一款优秀的国产Android视频播放器,它基于Kotlin编写,不但集成了Android原生的MediaPlayer,还集成了Jetpack的ExoPlayer,甚至集成了国产的ijkplayer。DKVideoPlayer既支持播放本地视频,也支持播放网络视频,甚至支持播放直播链接,可谓功能强大。
DKVideoPlayer的源码托管地址为https://github.com/Doikki/DKVideoPlayer(星星数5.3k),国内的镜像地址为https://gitcode.com/gh_mirrors/dk/DKVideoPlayer,最新版本是2022年7月发布的v3.3.7,可见该框架的源码更新十分及时,该版本的源码下载地址为https://github.com/Doikki/DKVideoPlayer/archive/refs/tags/3.3.7.tar.gz。
DKVideoPlayer提供了两种集成方式,引用在线库、直接导入源码,分别说明如下:

一、引用DKVideoPlayer在线库

Android工程引用DKVideoPlayer在线库时,需要修改以下两个配置:

1、打开模块级别的build.gradle,给dependencies节点补充下面几行配置,表示引入3.3.7版本的DKVideoPlayer库:

复制代码
# 必选,内部默认使用系统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'

2、打开App模块的src/main/AndroidManifest.xml,给manifest节点补充下面几行权限配置,表示声明悬浮窗、存储空间和网络等权限:

复制代码
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

二、直接导入DKVideoPlayer源码

DKVideoPlayer的源码已经适配Android Studio Dolphin(小海豚版本),仅需在项目级别的build.gradle补充国内仓库即可。也就是在repositories节点内部补充以下配置:

复制代码
// 以下四行添加阿里云的仓库地址,方便国内开发者下载相关插件
maven { url = uri("https://maven.aliyun.com/repository/jcenter") }
maven { url = uri("https://maven.aliyun.com/repository/google")}
maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin")}
maven { url = uri("https://maven.aliyun.com/repository/public")}
// 以下添加清华大学的仓库地址
maven { url = uri("https://mirrors.tuna.tsinghua.edu.cn/repository/maven-central/") }

增加以上配置的目的是引入国内的仓库地址,以便加快相关依赖包的下载速度。

等待DKVideoPlayer工程编译通过,把主入口的dkplayer-sample模块安装到手机上,启动之后的App界面如下图所示:

点击【点播】按钮,打开网络视频的播放界面如下图所示:

或者点击【直播】按钮,打开直播链接的播放界面如下图所示:

可见DKVideoPlayer支持调整播放窗口大小、调整播放速度,以及旋转、截图、裁剪等功能,可谓将常见的播放操作一网打尽。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

相关推荐
stevenzqzq4 小时前
Compose 中的状态可变性体系
android·compose
似霰5 小时前
Linux timerfd 的基本使用
android·linux·c++
EasyGBS6 小时前
视频画面模糊、卡顿、丢失?EasyGBS新增“视频质量诊断”功能,告别人工盯屏
视觉检测·音视频·gb28181·花屏·视频质量诊断·蓝屏检测
zhuweisky6 小时前
ArkTS实现鸿蒙手机视频聊天、屏幕分享(HarmonyOS)
音视频·harmonyos·鸿蒙开发
XHW___0016 小时前
webrtc 关键模块创建的时机
网络·音视频·webrtc
darling3317 小时前
mysql 自动备份以及远程传输脚本,异地备份
android·数据库·mysql·adb
你刷碗7 小时前
基于S32K144 CESc生成随机数
android·java·数据库
Leinwin7 小时前
VibeVoice-ASR:突破60分钟长音频处理瓶颈,语音识别进入端到端时代
人工智能·音视频·语音识别
TheNextByte17 小时前
Android上的蓝牙文件传输:跨设备无缝共享
android
野生技术架构师8 小时前
Java 21虚拟线程 vs Kotlin协程:高并发编程模型的终极对决与选型思考
java·开发语言·kotlin