RTE 開源|小紅書 REDPlayer 正式釋出!快來 get 同款播放器~

RTE开发者社区發表於2024-03-01

本專案由 RTE 開發者社群 x 小紅書 聯合運營

播放器最初出現在 19 世紀,當時主要用於播放音訊,例如透過留聲機播放唱片。

隨著技術的進步,音訊播放器不斷改進,品質越來越好,體積也越來越小。到了今天,透過手機或網路,人們可以隨時隨地播放音訊和影片。

優秀的播放器有幾個特性:需要提供強大、可擴充套件的功能,流暢的播放效果,順暢的使用者體驗,相容主流平臺,資源佔用小,安全性高。而市面上大多數播放器在相容性、功能、效能、可定製性等方面還有一定的最佳化空間,這也是很多開發者/公司選擇自主開發播放器的原因之一。

基於此,小紅書自主研發了一款跨平臺播放器 —— REDPlayer。不同於行業其他播放器,REDPlayer 具有結構簡單、耦合度低、功能邊界清晰等特點,提供了多種接入方式,技術人員可根據需要靈活選擇,既可快速整合 SDK 使用,也可基於原始碼進行定製開發。

REDPlayer 開源地址:https://github.com/RTE-Dev/REDPlayer

劃重點:Android、iOS、HarmonyOS 等平臺統統支援!如 HLS、MP4、FLV 等多種協議和格式也都支援~

關於 REDPlayer

REDPlayer 的宗旨是讓開發者可以快速清晰的瞭解播放器的基本構造,並可根據個人需求進行簡單擴充套件,滿足不同使用者的多樣需求,可作為學生學習的基礎工具,也可作為企業的商用平臺。

(REDPlayer 架構圖)

REDPlayer 支援點播、直播場景下的多種協議和格式(如 HLS、MP4、FLV 等),並可二次擴充套件更多協議(如 RTC 等)。每個模組均是解耦的,開發者可以根據需要掛載自定義模組,如自研解碼器、渲染器等。

新增小助手微信,備註 REDPlayer 進群
和作者交流工具使用與開發的日常

功能亮點

在過去,由於程式碼質量、文件等問題,播放器的二次開發和定製化很困難。REDPlayer 相容多平臺,開發者現在可以直接整合 REDPlayer,提高開發效率,節省開發時間,讓大家更加專注於業務邏輯的開發。此外,REDPlayer 架構清晰、擴充套件性好,這為二次開發提供了便利,可以根據實際業務需要定製播放器的功能,提升使用者體驗。

功能支援全面,降低開發成本:

  • REDPlayer 同時支援多端(如:Android、iOS、HarmonyOS 等)點播、直播下的多種協議和格式(如:HLS、MP4、FLV 等);
  • 支援預載、邊下邊播等功能,減少等待時間,提升播放流暢性,給使用者更好的觀看體驗;
  • 選擇性支援 HDR、超分等能力;

便利的二次開發:

  • 架構清晰、結構簡單,各模組耦合度低且可插拔、擴充性較好,能滿足不同包體積要求下的業務使用;

低成本:

  • 記憶體佔用較小、接入成本較低,可同時滿足不同的場景使用(如:課堂學習、企業商用等);

使用者自主性高:

  • 可選擇直接根據 Interface 快速接入 SDK 使用、也可以選擇基於 REDPlayer 程式碼做二次開發。開發者們可以根據自身需要選擇。



目前 REDPlayer 開源的功能支援用於建立更復雜的場景,例如在播放一個影片的過程中,使用者可以透過拖動進度條進行實時預覽,或在觀看過程中同時輸入文字形成彈幕等,以豐富整個互動場景的體驗。甚至,可以透過 REDPlayer,實現將摳圖後的人像與影片畫面共享疊加在一起的新影片畫面。

REDPlayer 整合與使用

那麼如何開始整合 REDPlayer 呢?REDPlayer 支援兩種形式的接入方式,即直接 SDK 接入和程式碼接入,下面將針對這兩種方式進行一一說明。

1、直接 SDK 接入

REDPlayer 既支援單一 URL 的輸入,也支援多 URL 的方式(JSON 方式)輸入,使用者可根據自己的需求靈活選擇。

具體步驟如下:

步驟 1:

IMediaPlayer mMediaPlayer = new RedMediaPlayer(); //建立播放器、初始化

步驟 2:

mMediaPlayer.setDataSource(mAppContext, url); //設定url

步驟 3:

mMediaPlayer.setEnableMediaCodec(true); //配置播放引數 mMediaPlayer.setVideoCacheDir(cacheDir);
mMediaPlayer.setLoop(true);
...

步驟 4:

mMediaPlayer.prepareAsync(); //prepare

步驟 5:

mMediaPlayer.start(); //開始播放,prepared狀態後呼叫
至此影片已經正常播起來了接下來使用者可以根據需要呼叫不同的介面具體可見 INTERFACE 介紹獲取對應的資訊或做對應的動作
void pause(); //暫停播放
void stop(); //停止播放
void reset(); //重置播放
void release(); //退出播放
long getCurrentPosition(); //獲取播放位置
long getDuration(); //獲取影片時長
float getSpeed(); //獲取播放速度

2、C++ 程式碼接入

該模組可基於上述架構圖中介紹,使用者選擇性地接入或替換,在此暫不做詳細說明,具體可見開源工程(https://github.com/RTE-Dev/RedPlayer)。

💪寫在最後

相信長期的價值,REDPlayer 將採取分步開源、逐漸演進的方式落地。因此,我們在 2024 年 1 月進行了第一波程式碼的開源:1、播放中間層程式碼開源(含:例項管理、介面呼叫等),2、REDPlayer 以 SDK 的形式開源。

未來,REDPlayer 也將持續維護迭代。二期,我們將陸續引入 OpenCore 核心模組的自定義開發和支援鴻蒙系統裝置應用等功能,開源 OpenCore 模組程式碼、鴻蒙版塊,進一步提升 REDPlayer 相關能力和開發者體驗。

REDPlayer 開源地址:https://github.com/RTE-Dev/REDPlayer

3 月 7 日晚間的 Dev Talk 直播中, 我們邀請了三位深耕音影片領域及播放器的大佬,大家可以來與 REDPlayer 的作者一起交流互動哦!

新增小助手微信,備註 REDPlayer 進群
和作者交流工具使用與開發的日常

相關文章