安卓:來源選擇

在本主題中,您將了解 Android 版 Brightcove 原生播放器 SDK 如何在播放視訊時使用預設來源選取程序。

簡介

從Brightcove目錄中檢索視頻時,SDK必須確定要播放的源。這是在DefaultSourceSelectionControllerExoPlayerSourceSelectionController組件。

預設選取程序

適用於Android的Brightcove Player SDK使用默認的源選擇過程。為簡化起見,我們將重點關注SDK對Brightcove Playback API和Google的ExoPlayer的支持。

默認選擇過程定義如下:

  1. 使用適用於Android 6.4+的Brightcove Native SDK,可以選擇所有來源類型的HTTPS傳遞(如果可用)。

    這倆DefaultSourceSelectionControllerExoPlayerSourceSelectionController嘗試選擇HTTPS版本的deliveryType已選擇。如果不存在HTTPS源,則選擇控制器將選擇第一個可用的HTTPS源。

  2. BrightcoveExoPlayerVideoView尋找具有deliveryTypeMPEG-DASH,以及既不是:hbbtv也不ur:dvb。SDK不支持使用這兩個DASH配置文件中的任何一個進行播放,因此將其從源中過濾掉。
  3. 如果未找到上述內容,則源選擇會使用deliveryTypeHLS
  4. 如果找不到這樣的來源,則會使用deliveryTypeMP4以及最接近256 kBps的比特率。

找到源之後,實現將繼續如下:

  1. 如果找到,將發出選定的信號源並響應SELECT_SOURCE事件。
  2. 默認情況下, VideoPlaybackController處理SELECT_SOURCE通過發出一個響應SET_SOURCE事件。
  3. VideoDisplayComponent或子類處理SET_SOURCE通過將URL加載到基礎播放器(ExoPlayer或MediaPlayer)中來觸發事件。
  4. 回放開始時,基礎播放器負責使用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();
	}
});