《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“第 12 章 ?FFmpeg的移動(dòng)開發(fā)”介紹了如何使用FFmpeg在手機(jī)上播放視頻,基于FFmpeg的國(guó)產(chǎn)播放器開源框架也有很多了,前有嗶哩嗶哩的ijkplayer,后有小紅書的RedPlayer,參見之前的文章《使用國(guó)產(chǎn)的ijkplayer播放器觀看網(wǎng)絡(luò)視頻》和《使用國(guó)產(chǎn)的RedPlayer播放器觀看網(wǎng)絡(luò)視頻》。
除此以外,wlmedia也是一款優(yōu)秀的國(guó)產(chǎn)音視頻播放SDK,該框架既支持Android系統(tǒng),也支持鴻蒙系統(tǒng),集成方便、使用簡(jiǎn)單,可謂異軍突起。wlmedia基于FFmpeg、OpenSSL、SoundTouch、dav1d等第三方庫(kù),支持file、http、https、udp、rtmp、rtp、rtsp、byte[]等常見播放協(xié)議,也支持H.264、H.265、AV1等視頻編碼格式。
wlmedia的源碼托管地址為https://github.com/ywl5320/wlmedia,最新版本是2025年4月發(fā)布的wlmedia 4.2.0,可見該框架的源碼更新十分及時(shí)。并且wlmedia的源碼采用Java+XML編寫,對(duì)于初學(xué)者而言非常友好,使用Android Studio Dolphin(小海豚版本)無(wú)需任何改動(dòng)即可直接導(dǎo)入wlmedia的demo工程。
在自己的App工程中集成wlmedia也很簡(jiǎn)單,只要執(zhí)行下列幾個(gè)步驟就行。
一、導(dǎo)入wlmedia庫(kù)
如果已經(jīng)事先導(dǎo)入wlmedia的庫(kù)工程,則只需在build.gradle中添加下面一行即可引入wlmedia:
implementation project(path: ':wlmedia')
如果不用庫(kù)工程,也只要在build.gradle中添加下面一行即可引入wlmedia:
implementation 'com.github.ywl5320:wlmedia:4.2.0'
二、引入wlmedia控件
wlmedia提供了兩種控件:WlSurfaceView和WlTextureView,其中WlSurfaceView用于一般的播放場(chǎng)景,布局代碼示例如下:
<RelativeLayout
? ? android:layout_width="wrap_content"
? ? android:layout_height="260dp">
? ? <-- WlSurfaceView 一般播放使用 -->
? ? <com.ywl5320.wlmedia.widget.WlSurfaceView
? ? ? ? android:id="@+id/wlsurfaceview"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" />
? ? <-- WlSurfaceView 加載中的動(dòng)畫 -->
? ? <com.ywl5320.wlmedia.widget.WlCircleLoadView
? ? ? ? android:id="@+id/wlcircleview"
? ? ? ? android:layout_width="50dp"
? ? ? ? android:layout_height="50dp"
? ? ? ? android:layout_centerInParent="true" />
? ? <-- WlSurfaceView 播放控制條 -->
? ? <com.ywl5320.wlmedia.widget.WlSeekBar
? ? ? ? android:id="@+id/wlseekbar"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="50dp"
? ? ? ? android:layout_alignParentBottom="true" />
</RelativeLayout>
而WlTextureView用于需要變更展示效果的場(chǎng)景,比如透明、移動(dòng)、旋轉(zhuǎn)等等,布局代碼示例如下:
<-- WlTextureView 需要做透明、移動(dòng)、旋轉(zhuǎn)等使用 -->
<com.ywl5320.wlmedia.widget.WlTextureView
? ? android:id="@+id/wltextureview"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent" />
三、引入wlmedia播放器
wlmedia提供的播放器叫做WlPlayer,它的用法很簡(jiǎn)單,只要以下幾行代碼就夠了:
// 創(chuàng)建播放器WlPlayer的實(shí)例
WlPlayer wlPlayer = new WlPlayer();
// 設(shè)置使用OpenGL渲染的最大視頻寬高
wlPlayer.setRenderDefaultSize(3840, 2160);
// 是否自動(dòng)播放
wlPlayer.setAutoPlay(true);
// 設(shè)置音量
wlPlayer.setVolume(100);
WlSurfaceView wlSurfaceView = findViewById(R.id.wlsurfaceview);
// 讓控件wlSurfaceView關(guān)聯(lián)播放器WlPlayer
wlSurfaceView.setWlPlayer(wlPlayer);
按照上述幾個(gè)步驟給App工程集成wlmedia后,編譯運(yùn)行wlmedia的demo工程,打開測(cè)試App如下圖所示,可見wlmedia提供了多種演示功能。

點(diǎn)擊第一個(gè)“基礎(chǔ)播放”按鈕,打開普通播放頁(yè)面如下圖所示,可見wlmedia除了常規(guī)的控制操作之外,還提供了縮放、倍速、截圖等其他功能。

總結(jié)一下,wlmedia的確使用簡(jiǎn)單,播放功能也豐富,是個(gè)不錯(cuò)的國(guó)產(chǎn)播放器SDK。
更多詳細(xì)的FFmpeg開發(fā)知識(shí)參見《FFmpeg開發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書。