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

FFmpeg开发笔记(七十八)采用Kotlin+Compose的NextPlayer播放器

《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章  FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上播放视频,基于FFmpeg的国产播放器开源框架也有很多了,前有哔哩哔哩的ijkplayer,后有小红书的RedPlayer,参见之前的文章《使用国产的ijkplayer播放器观看网络视频》和《使用国产的RedPlayer播放器观看网络视频》。
除此以外,NextPlayer也是一款优秀的Android原生播放器,该框架采用Kotlin+Compose开发,贴近最新的Android开发技术。NextPlayer支持的视频编码格式包括H.263、H.264(AVC)、H.265(HEVC)、MPEG-4 SP、VP8、VP9、AV1等,支持的音频编码格式包括Vorbis、Opus、FLAC、ALAC、PCM/WAVE、MP1、MP2、MP3、AMR、AAC 等,支持的字幕格式包括SRT、SSA、ASS、TTML、VTT、DVB等,可谓博采众长。
NextPlayer的源码托管地址为https://github.com/anilbeesetti/nextplayer(星星数2.8k),国内的镜像地址为https://gitcode.com/gh_mirrors/ne/nextplayer,最新版本是2025年1月发布的NextPlayer v0.13.0,可见该框架的源码更新十分及时。并且NextPlayer的源码采用Kotlin+Compose编写,适合Android开发者用作进阶练习,不过由于NextPlayer引入了最新的Android开发技术,因此需要使用较新的Android Studio才能成功导入运行。
接下来以Android Studio Ladybug(小瓢虫版本)为例,介绍如何通过Android Studio编译运行NextPlayer的demo工程。
使用Android Studio导入nextplayer工程之后,Gradle会报错“The project is using an incompatible version (AGP 8.10.1) of the Android Gradle plugin. Latest supported version is AGP 8.7.2”。这是因为nextplayer工程用到的Gradle插件版本8.10.1太高了,需要降级降到8.7.2。于是打开nextplayer/gradle/libs.versions.toml,把下面这行

androidGradlePlugin = "8.10.1"

改为下面这行,也就是把androidGradlePlugin版本号从8.10.1降到8.7.2。

androidGradlePlugin = "8.7.2"

继续编译nextplayer工程,Gradle又报错“Inconsistent JVM-target compatibility detected for tasks 'compileJava' (21)”。这是因为nextplayer工程用的JVM版本为17,而Android Studio Ladybug默认安装的JVM版本为21,所以需要把nextplayer工程的JVM版本从17升级到21。于是打开nextplayer/gradle/libs.versions.toml,把下面这行

android-jvm = "17"

改为下面这行,也就是把android-jvm版本号从17升到21。

android-jvm = "21"

等待nextplayer工程编译通过,把demo应用安装到手机上,启动之后的App界面如下图所示:

可见NextPlayer会自动搜索手机上的视频目录。进入某个目录后选择一个视频,NextPlayer就打开全屏播放窗口如下图所示:

点击播放界面右上角的音符图标,弹出音轨选择窗口如下图所示:

总结一下,NextPlayer确实使用简单,播放功能也丰富,是个未来可期的下一代播放器。

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

http://www.njgz.com.cn/news/439.html

相关文章:

  • 4.5.4 预测下一个PC
  • 第十六日
  • 2025“钉耙编程”中国大学生算法设计暑期联赛(3)
  • VMware Windows Linux Macos网盘下载
  • ZBrush 2025 中文版免费下载,附图文安装指南,小白也能快速上手!
  • k8s network
  • hyprland初尝试
  • 正则表达式 更新常用则表达式-----loading
  • 幼儿园小班线段树
  • 树02
  • 深入ADC采样
  • 学习笔记:MySQL :eq_range_index_dive_limit参数
  • Python字符串知识点总结
  • SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
  • 读书笔记:Oracle数据库内存结构:系统全局区(SGA)详解
  • 小飞标签
  • 服务器配置的精细化控制(3960)
  • TCP连接优化的实战经验(7340)
  • 家庭主妇人到中年的生活困境很难突破防
  • 中间件架构的优雅实现(0454)
  • 梦醒时分
  • Hyperlane框架最全教学(6165)
  • 并发处理能力的巅峰对决:异步编程的艺术(3501)
  • 实战项目:全栈在线群聊系统(7048)
  • HTTP响应处理的灵活设计(0782)
  • Rust异步Web框架性能突破之路(6359)
  • 服务器配置的精细化控制(7138)
  • 内存使用效率的终极对决:零拷贝技术的实战应用(0345)
  • 明源相关漏洞自查清单(2025)
  • TCP连接优化的实战经验(3513)