Stories

Detail Return Return

FFmpeg開發筆記(七十六)使用國產SDK的播放器wlmedia渲染視頻 - Stories Detail

《FFmpeg開發實戰:從零基礎到短視頻上線》一書的“第 12 章  FFmpeg的移動開發”介紹瞭如何使用FFmpeg在手機上播放視頻,基於FFmpeg的國產播放器開源框架也有很多了,前有嗶哩嗶哩的ijkplayer,後有小紅書的RedPlayer,參見之前的文章《使用國產的ijkplayer播放器觀看網絡視頻》和《使用國產的RedPlayer播放器觀看網絡視頻》。

除此以外,wlmedia也是一款優秀的國產音視頻播放SDK,該框架既支持Android系統,也支持鴻蒙系統,集成方便、使用簡單,可謂異軍突起。wlmedia基於FFmpeg、OpenSSL、SoundTouch、dav1d等第三方庫,支持file、http、https、udp、rtmp、rtp、rtsp、byte[]等常見播放協議,也支持H.264、H.265、AV1等視頻編碼格式。
wlmedia的源碼託管地址為 https://github.com/ywl5320/wlmedia ,最新版本是2025年4月發佈的wlmedia 4.2.0,可見該框架的源碼更新十分及時。並且wlmedia的源碼採用Java+XML編寫,對於初學者而言非常友好,使用Android Studio Dolphin(小海豚版本)無需任何改動即可直接導入wlmedia的demo工程。
在自己的App工程中集成wlmedia也很簡單,只要執行下列幾個步驟就行。

一、導入wlmedia庫

如果已經事先導入wlmedia的庫工程,則只需在build.gradle中添加下面一行即可引入wlmedia:

implementation project(path: ':wlmedia')

如果不用庫工程,也只要在build.gradle中添加下面一行即可引入wlmedia:

implementation 'com.github.ywl5320:wlmedia:4.2.0'

二、引入wlmedia控件

wlmedia提供了兩種控件:WlSurfaceView和WlTextureView,其中WlSurfaceView用於一般的播放場景,佈局代碼示例如下:

<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 加載中的動畫 -->
    <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用於需要變更展示效果的場景,比如透明、移動、旋轉等等,佈局代碼示例如下:

<-- WlTextureView 需要做透明、移動、旋轉等使用 -->
<com.ywl5320.wlmedia.widget.WlTextureView
    android:id="@+id/wltextureview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

三、引入wlmedia播放器

wlmedia提供的播放器叫做WlPlayer,它的用法很簡單,只要以下幾行代碼就夠了:

// 創建播放器WlPlayer的實例
WlPlayer wlPlayer = new WlPlayer();
// 設置使用OpenGL渲染的最大視頻寬高
wlPlayer.setRenderDefaultSize(3840, 2160);
// 是否自動播放
wlPlayer.setAutoPlay(true);
// 設置音量
wlPlayer.setVolume(100);
WlSurfaceView wlSurfaceView = findViewById(R.id.wlsurfaceview);
// 讓控件wlSurfaceView關聯播放器WlPlayer
wlSurfaceView.setWlPlayer(wlPlayer);

按照上述幾個步驟給App工程集成wlmedia後,編譯運行wlmedia的demo工程,打開測試App如下圖所示,可見wlmedia提供了多種演示功能。

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

總結一下,wlmedia的確使用簡單,播放功能也豐富,是個不錯的國產播放器SDK。

更多詳細的FFmpeg開發知識參見《FFmpeg開發實戰:從零基礎到短視頻上線》一書。

user avatar u_15878077 Avatar hejing-michael Avatar vivotech Avatar q_bit Avatar aitaokedemugua Avatar
Favorites 5 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.