サポート問い合わせ先| システムステータス
ページコンテンツ

    Android:ソースの選択

    このトピックでは、Android用Brightcove Native Player SDKが、ビデオの再生時にデフォルトのソース選択プロセスをどのように使用するかを学習します。

    はじめに

    Brightcoveのカタログから動画を取得する場合、SDK は再生するソースを決定する必要があります。これは、 defaultSourceSelectionController コンポーネントと exoPlayerSourceSelectionController コンポーネントに実装されています。

    デフォルトの選択プロセス

    Android 用 Brightcove Player SDK では、デフォルトのソース選択プロセスが使用されます。簡単にするために、SDK によるBrightcove再生 API および Google の exoPlayer のサポートに重点を置きます。

    デフォルトの選択プロセスは次のように定義されます。

    1. Android 6.4 以降の Brightcove ネイティブ SDK では、利用可能な場合、すべてのソースタイプの HTTPS 配信が選択されます。

      DefaultSourceSelectionController exoPlayerSourceSelectionController の両方が、deliveryType選択したの HTTPS バージョンを選択しようとします。HTTPS ソースが存在しない場合、選択コントローラは最初に使用可能なソースを選択します。

    2. NS BrightcoveExoPlayerVideoViewを持っている最初のソースを探しますdeliveryTypeMPEG-DASH、およびどちらでもないプロファイルurn:hbbtvまたはurn:dvb。SDK は、これらの DASH プロファイルのどちらでも再生をサポートしていないため、ソースから除外されます。
    3. 上記が見つからない場合、ソースの選択は最初のソースにフォールバックします。deliveryTypeHLS
    4. そのようなソースが見つからない場合は、ソースにフォールバックします。deliveryTypeMP4 256kBpsに最も近いビットレート。

    ソースが見つかると、次のように実装が続行されます。

    1. 見つかった場合、選択したソースは SELECT_SOURCE イベントに対する応答とともに放出されます。
    2. デフォルトでは、 VideoPlaybackControllerを処理しますSELECT_SOURCE応答、放出することによってSET_SOURCEイベント。
    3. VideoDisplayComponent またはサブクラスは、基になるプレーヤー (exoPlayer または MediaPlayer) に URL をロードすることによって、 SET_SOURCE イベントを処理します。
    4. 再生が開始されると、基になるプレーヤーが HLS コンテンツと DASH コンテンツでビットレートを調整します。HLS では、基になるプレーヤーはマスターマニフェストにリストされている最初のビットレートから始まります。

    デフォルトのトランスコード設定を使用する場合、最初の HLS ソースは、個々のソース (レンディション) をすべて指すマスター m3u8 プレイリストである必要があります。

    HLS ソースの設定

    SDK のデフォルトのソース選択ポリシーが呼び出される前に、アプリレベルでソース選択をカスタマイズして、望ましくない配信タイプを除外することができます。これを行うには、Playback API の JSON レスポンスから Video オブジェクトに設定されるソースコレクションを変更します。

    この例では、HLS ソースのみを使用します。

    catalog.findVideoByReferenceID(videoReferenceId, new com.brightcove.player.edge.VideoListener() {
    	@Override
    	public void onVideo(Video video) {
    	 sourceSelectionFilter(DeliveryType.HLS, video);
    	 brightcoveVideoView.add(video);
    	 brightcoveVideoView.start();
    	}
    });

    sourceSelectionFilter()メソッドは次のようになります。

    public static void sourceSelectionFilter(@NonNull DeliveryType deliveryTypeFilter, @NonNull Video video) {
     if (video.getSourceCollections().containsKey(deliveryTypeFilter)) {
       // Only remove the other delivery types if the desired type is in our Source collections
       for (DeliveryType deliveryType : DeliveryType.values()) {
         if (!deliveryType.equals(deliveryTypeFilter)) {
                video.getSourceCollections().remove(deliveryType);
         }
       }
     }
    }

    ページの最終更新日21 May 2021