ExoPlayer 開發指南

2021-09-03 07:20:11 字數 1990 閱讀 1484

與android內建的mediaplayer相比,exoplayer具有許多優點:

1.支援通過http(dash)和smoothstreaming進行動態自適應流,這兩種都不受mediaplayer的支援。還支援許多其他格式。同時它還支援http直播(hls),mp4,***,webm,m4a,mpeg-ts 和 aac的格式檔案

3.更少的適配性問題。

缺點:整個庫中都存在注入元件的概念,許多子元件都能單獨替換成自定義元件,而不會影響整個流程。 例如,預設的mediasource實現需要通過其建構函式注入乙個或多個datasource工廠, 通過提供自定義factory,可以從非標準源或不同的網路堆疊載入資料。

新增exoplayer庫作為依賴

建立乙個******exoplayer例項

第一步是確保專案根目錄中的build.gradle檔案中包含jcenter倉庫:

repositories
compile 'com.google.android.exoplayer:exoplayer:r2.x.x'
// step1\. 建立乙個預設的trackselector

handler mainhandler = new handler();

// 建立頻寬

bandwidthmeter bandwidthmeter = new defaultbandwidthmeter();

// 建立軌道選擇工廠

trackselection.factory videotrackselectionfactory = new adaptivetrackselection.factory(bandwidthmeter);

// 建立軌道選擇器例項

trackselector trackselector = new defaulttrackselector(videotrackselectionfactory);

******exoplayer player = exoplaye***ctory.new******instance(context, trackselector);

defaultbandwidthmeter bandwidthmeter = new defaultbandwidthmeter();

// 建立載入資料的工廠

datasource.factory datasourcefactory = new defaultdatasourcefactory(context,

// 建立解析資料的工廠

extractorsfactory extractorsfactory = new defaultextractorsfactory();

// 傳入uri、載入資料的工廠、解析資料的工廠,就能建立出mediasource

mediasource videosource = new extractormediasource(mp4videouri,

datasourcefactory, extractorsfactory, null, null);

// prepare

player.prepare(videosource);

在exoplayer中,每個多**均由mediasource表示, exoplayer庫為dash(dashmediasource)、smoothstreaming(ssmediasource)、hls(hlsmediasource)和常規**檔案(extractormediasource)提供了預設實現。 github上的demo中,可以在playeractivity中找到例項化所有四個示例。

除了上層監聽外,exoplayer庫提供的許多單獨的元件允許自己的事件***。 通常需要將handler物件傳遞給這些元件,這些handler決定偵聽器方法將在哪個執行緒呼叫,所以在大多數情況下,應該使用主線程的handler。

如果自定義元件需要將事件報告回應用程式,我們建議您使用與現有exoplayer元件相同的模型,其中將事件偵聽器與handler一起傳遞到元件的建構函式。

Django Web開發指南

國內第一本django圖書 django web開發指南 歡迎使用django 歡迎來到django的世界,很高興能和你一起進行這趟旅程。你會發現有了這個強大的web框架,做每件事情都變得便捷起來 從設計開發新應用到不用大刀闊斧地修改 就能為現有 提供新的特性和功能。關於本書 市面上已經有了一些講解...

SQL Server 開發指南

sql server 資料庫設計 一 資料庫設計的必要性 二 什麼是資料庫設計 三 資料庫設計的重要 四 資料模型 實體 關係 e r 資料模型 實體 entity 屬性 attribute 關係 relationship 五 資料庫設計步驟 1 需求分析階段 2 概要設計階段 3 詳細設計階段 六...

shell 開發指南

語法 釋義使用示例 bash source 0 取得當前執行的shell檔案所在的路徑 context dirname 上一條指令執行完的退出狀態.0為成功,非0為失敗.if eq 0 then 基本結構 if 條件語句 then 執行語句1 else 執行語句2 fi注意條件語句外有 兩種形式 常...