FFmpeg开发笔记(七十一)使用国产的QPlayer2实现双播放器观看视频

QPlayer2是七牛云基于FFmpeg6.1研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。有关FFmpeg在Android平台的集成说明参见《FFmpeg开发实战:从零基础到短视频上线》一书的"第12章 FFmpeg的移动开发"。

之前的文章《使用国产的RedPlayer播放器观看网络视频》介绍了另一款由小红书研发的国产播放器RedPlayer,本来RedPlayer已经很好用了,谁知QPlayer2又横空出世,不仅基于FFmpeg6.1,还新增了画面旋转/镜像/缩放能力,其Demo工程甚至适配到了Android 15(即API 35)。
这里以Android Studio Dolphin(小海豚版本)为例,介绍如何在App工程中运行QPlayer2,详细的操作步骤如下。
QPlayer2适配不同系统的源码分开托管,其中Android版本的源码托管地址为https://github.com/pili-engineering/QPlayer2-Android。因为QPlayer2的最新源码基于Gradle8.7,与Android Studio Dolphin(小海豚版本),所以为了让小海豚版本能够打开QPlayer2源码,需要对Qplayer2Demo目录下的工程配置做如下改动:
1、打开gradle\wrapper\gradle-wrapper.properties,把下面这行

复制代码
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip

改成下面这行,也就是把Gradle8.7降级到Gradle7.2。

复制代码
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip

2、打开项目级别的build.gradle,把下面这行

复制代码
classpath 'com.android.tools.build:gradle:8.6.1'

改成下面这行,也就是把gradle8.6.1降级到gradle7.1.2。

复制代码
classpath 'com.android.tools.build:gradle:7.1.2'

3、依次选择菜单:File→Settings→Build,Execution,Deployment→Build Tools→Gradle,把Gradle JDK栏的版本调整为JDK17。

4、打开模块级别的build.gradle,把android节点内部的下面这行

复制代码
compileSdk 35

改成下面这行,也就是把编译SDK版本从API35降级到API34。

复制代码
compileSdk 34

5、打开模块级别的build.gradle,把dependencies节点内部的下面四行

复制代码
implementation "org.jetbrains.kotlin:kotlin-stdlib:2.0.20"
implementation 'androidx.core:core-ktx:1.15.0'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'

改成下面三行,也就是把相关依赖库统统降级。

复制代码
implementation 'androidx.core:core-ktx:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

完成以上配置修改之后,再编译Qplayer2Demo工程,然后安装到手机的QPlayer2首页如下图所示:

点击首页上方的长视频按钮,打开长视频的演示页面如下图所示。

回到首页,点击下方的双播放器按钮,打开双播放器的演示页面如下图所示。

可见QPlayer2能够正常播放网络视频。

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

相关推荐
独行soc5 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20356 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106326 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
那个村的李富贵6 小时前
CANN赋能AIGC“数字人”革命:实时视频换脸与表情驱动实战
aigc·音视频
晚霞的不甘6 小时前
CANN 支持强化学习:从 Isaac Gym 仿真到机械臂真机控制
人工智能·神经网络·架构·开源·音视频
vistaup6 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵6 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android
撩得Android一次心动6 小时前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
熊猫钓鱼>_>6 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
晚霞的不甘10 小时前
CANN 支持多模态大模型:Qwen-VL 与 LLaVA 的端侧部署实战
人工智能·神经网络·架构·开源·音视频