《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開發實戰:從零基礎到短視頻上線》一書。