簡介
從Brightcove目錄中檢索視頻時,SDK必須確定要播放的源。這是在DefaultSourceSelectionController和ExoPlayerSourceSelectionController組件。
預設選取程序
適用於Android的Brightcove Player SDK使用默認的源選擇過程。為簡化起見,我們將重點關注SDK對Brightcove Playback API和Google的ExoPlayer的支持。
默認選擇過程定義如下:
-
使用適用於Android 6.4+的Brightcove Native SDK,可以選擇所有來源類型的HTTPS傳遞(如果可用)。
這倆DefaultSourceSelectionController和ExoPlayerSourceSelectionController嘗試選擇HTTPS版本的
deliveryType
已選擇。如果不存在HTTPS源,則選擇控制器將選擇第一個可用的HTTPS源。 - 的BrightcoveExoPlayerVideoView尋找具有
deliveryType
的MPEG-DASH,以及既不是:hbbtv也不ur:dvb。SDK不支持使用這兩個DASH配置文件中的任何一個進行播放,因此將其從源中過濾掉。 - 如果未找到上述內容,則源選擇會使用
deliveryType
的HLS。 - 如果找不到這樣的來源,則會使用
deliveryType
的MP4以及最接近256 kBps的比特率。
找到源之後,實現將繼續如下:
- 如果找到,將發出選定的信號源並響應SELECT_SOURCE事件。
- 默認情況下, VideoPlaybackController處理SELECT_SOURCE通過發出一個響應SET_SOURCE事件。
- 的VideoDisplayComponent或子類處理SET_SOURCE通過將URL加載到基礎播放器(ExoPlayer或MediaPlayer)中來觸發事件。
- 回放開始時,基礎播放器負責使用HLS和DASH內容調整比特率。使用HLS,基礎播放器從主清單中列出的第一個比特率開始。
使用默認代碼轉換設置時,第一個HLS來源應該是指向您所有單個來源(信譽)的主m3u8播放列表。
設置HLS源
可以在應用程序級別自定義源選擇,以在調用SDK的默認源選擇策略之前過濾掉所有不需要的傳遞類型。為此,您可以修改從 Playback API 的 JSON 響應設置到 Video 對像中的源集合。
這個例子使用VideoUtil.filterSourcesOnDeliveryType
僅包含 HLS 源:
catalog.findVideoByReferenceID(videoReferenceId, new com.brightcove.player.edge.VideoListener() {
@Override
public void onVideo(Video video) {
VideoUtil.filterSourcesOnDeliveryType(video, DeliveryType.HLS);
brightcoveVideoView.add(video);
brightcoveVideoView.start();
}
});