​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开发实战:从零基础到短视频上线》一书。

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

  1. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  5. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)

    源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

  6. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  7. 最简单的基于FFmpeg的移动端样例附件:Android 自带播放器

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  8. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

    对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明一下与开发没有直接关系的内容. 首先,关于我为什么开发这个协议栈的问题.我们的初衷只是想能够在开发产品时不用每次都重写这一部分 ...

  9. FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...

  10. SDL开发笔记(二):音频基础介绍、使用SDL播放音频

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

随机推荐

  1. AI时代:开源大模型选择

    https://docs.llamaindex.ai/en/stable/module_guides/models/llms.html 可以按参数和评分来选择模型: https://huggingfa ...

  2. Windows IntelliJ IDEA 快捷键终极大全

    自动代码 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 . 例如要输入for(User user : users)只需输 ...

  3. 解决React Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?

    问题 当我使用如下方式调用组件子组件UploadModal并且绑定Ref时React报错"Warning: Function components cannot be given refs. ...

  4. 最新最完整的iphone开发ios开发证书/发布证书/推送证书/企业证书和描述文件制作方法与教程

    本文介绍最新的最全的如何制作 iOS 证书(开发证书.发布证书.推送证书,企业证书)和iphone配置描述文件,用于iphone和ipad开发构建 IOS App 应用.如果嫌麻烦,可以使用懒人工具a ...

  5. Burp插件Fiora联动nuclei(windows)

    大佬写的插件出来好久了 今天朋友问我Fiora联动nuclei,我突然忘了咋配的的了.. 记录一下 一.下载nuclei https://github.com/projectdiscovery/nuc ...

  6. 想让鸿蒙应用快的“飞起”,来HarmonyOS开发者官网“最佳实践-性能专区”

    在鸿蒙应用开发过程中,应用侧流畅运行体验是开发者非常关注的部分.为此,华为HarmonyOS开发者官网推出了"最佳实践-性能专区"(以下简称"性能专区"),通过 ...

  7. 牛逼,这款开源聊天应用竟能一键召唤多个AI助手,跨平台通话神器!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 JiwuChat是一款基于Tauri2和Nuxt3构建的轻量化多平台即时通讯工具,仅约8MB ...

  8. java从小白到老白①

    计算机:由软件和硬件组成.其中没有安装任何软件的电脑称为裸机 (1)计算机硬件是指系统中由电子,机械和光电元件等组成的各种物理装置的总称.这些物理装置按系统结构的要求构成一个有机整体为计算机软件提供物 ...

  9. K8s中的污点和容忍

    概述 官方文档:https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/ 污点是作用在k8 ...

  10. HanTTS简单文档

    先下载 https://gitee.com/dhfhub/HanTTS 然后输入命令 main.py synthesize --text 你的话 --src "syllables/" ...