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

    Android:メディアコンテンツの操作

    このトピックでは、Native SDK forAndroidを使用して動画を取得して再生する方法を学習します。

    概要

    Video Cloud のお客様は、Video Cloud Studio からメディアデータとメタデータにアクセスできます。Brightcoveプレーヤーのお客様は、メディアコンテンツの URL を指定します。

    ビデオクラウドのお客様

    Video Cloud のお客様は、Video Cloud Studio に保存されているメディアデータにアクセスできます。詳細については、 Android 用 Player SDK コードサンプルを参照してください

    メディアデータを取得しています

    再生 API を使用して、Video Cloud ライブラリからビデオとプレイリストデータを取得できます。API の詳細については、「再生 API の概要」ドキュメントを参照してください。

    1. com.brightcove.Player.edge.calog クラスのメソッドを使用して、Brightcoveの再生 API から動画と再生リストを取得します。あなたの要求は、IDビデオ/プレイリストを提供することができますReferenceID .このサービスは、URL 要求を行い、返されたデータを解析します。

    2. このリクエストには、ポリシーキーが必要です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」ドキュメントを参照してください。

      com.brightcove.player.edge.Catalogクラスを使用してビデオを取得する方法の例は次のとおりです。

      package com.brightcove.player.samples.exoplayer.basic;
      import android.os.Bundle;
      import android.util.Log;
      import com.brightcove.player.edge.Catalog;
      import com.brightcove.player.edge.VideoListener;
      import com.brightcove.player.event.EventEmitter;
      import com.brightcove.player.model.Video;
      import com.brightcove.player.view.BrightcoveExoPlayerVideoView;
      import com.brightcove.player.view.BrightcovePlayer;
      /**
      * This app illustrates how to use the ExoPlayer with the Brightcove
      * Native Player SDK for Android.
      */
      public class MainActivity extends BrightcovePlayer {
      	private final String TAG = this.getClass().getSimpleName();
      	@Override
      
      	protected void onCreate(Bundle savedInstanceState) {
      		setContentView(R.layout.activity_main);
      		brightcoveVideoView = (BrightcoveExoPlayerVideoView) findViewById(R.id.brightcove_video_view);
      		super.onCreate(savedInstanceState);
      
      		// Get the event emitter from the SDK and create a catalog request to fetch a video from the
      		// Brightcove Edge service, given a video id, an account id and a policy key.
      		EventEmitter eventEmitter = brightcoveVideoView.getEventEmitter();
      		Catalog catalog = new Catalog(eventEmitter, getString(R.string.account), getString(R.string.policy));
      
      		catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
      		  // Add the video found to the queue with add().
      		  // Start playback of the video with start().
      		  @Override
      		  public void onVideo(Video video) {
      		    Log.v(TAG, "onVideo: video = " + video);
      		    brightcoveVideoView.add(video);
      		    brightcoveVideoView.start();
      		  }
      		});
      	}
      }
    1. 以下に示すように、ビデオオブジェクトは、メディア情報を取得するためのメソッドを提供します。
      catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
        // Add the video found to the queue with add().
        // Start playback of the video with start().
        @
        Override
        public void onVideo(Video video) {
          Log.v(TAG, "onVideo: video = " + video);
          Log.v(TAG, "onVideo: videoID = " + video.getId());
          Log.v(TAG, "onVideo: videoName = " + video.getName());
          Log.v(TAG, "onVideo: videoDescription = " + video.getDescription());
          Log.v(TAG, "onVideo: videoImage = " + video.getStillImageUri());
          Log.v(TAG, "onVideo: sourceCollections = " + video.getSourceCollections());
          SourceCollection dashCollection = video.getSourceCollections().get(DeliveryType.DASH);
          if (dashCollection != null) {
            Set < Source > sources = dashCollection.getSources();
            for (Source source: sources) {
              if (!TextUtils.isEmpty(source.getUrl())) {
                Log.v(TAG, "onVideo: DASH source = " + source.getUrl());
              }
            }
          }
      
          brightcoveVideoView.add(video);
          brightcoveVideoView.start();
        }
      });

      Log()上記のメソッドは、次のメディア情報を返します。

      Video object
      Videoオブジェクト
    2. オブジェクトのカスタムフィールドが存在する場合は、Videoそのオブジェクトに存在することを確認することができます。onVideo次のコードをコールバックメソッドに追加して、customFieldマップをループします。

      catalog.findVideoByID(getString(R.string.videoId), new VideoListener() {
         @
         Override
         public void onVideo(Video video) {
            Map<String, String> customFieldMap = (HashMap<String, String>) video.getProperties().get(Video.Fields.CUSTOM_FIELDS);
           if (customFieldMap != null && customFieldMap.size() > 0) {
             for (Map.Entry<String, String> entry : customFieldMap.entrySet()) {
               Log.v(TAG, "onVideo: Custom fields: Key: " + entry.getKey() + " Value: " + entry.getValue());
             }
           }
           brightcoveVideoView.add(video);
           brightcoveVideoView.start();
        }
      });

      上記のコードからわかるログ出力の例を次に示します。

      MainActivity: onVideo: Custom fields: Key: genre Value: Action
      MainActivity: onVideo: Custom fields: Key: customlist Value: customListValue1

      カスタムフィールドは、Stringsまたはとして表すことができることに注意してくださいListsListカスタムフィールドには型を指定できますが、Stringフィールドの値を設定するために 1 つの値が選択される値のリストです。

    ジオフィルターされた動画

    Android 用 Brightcove Player SDK は、ジオフィルタリングされた動画をサポートしています。

    動画に地理フィルタリングを追加して、視聴できる(またはできない国)を制御するには、次の 2 つの方法があります。

    Android アプリで、Brightcoveのエッジカタログオブジェクト(Playback API)を使用して動画を取得すると、その動画に対してジオフィルターが適用されている国で、次のメッセージが表示されます。

    error { message: Access to this resource is forbidden by access policy.
    client_geo: us
    error_subcode: CLIENT_GEO
    error_code: ACCESS_DENIED }

    Brightcoveプレーヤーのお客様

    Brightcove Player の顧客は、動画アセットの URL を指定します。

    次に、ビデオビューをビデオに追加して再生を開始する例を示します。

    import com.brightcove.player.model.DeliveryType;
    import com.brightcove.player.model.Video;
    import com.brightcove.player.view.BrightcoveExoPlayerVideoView;
    import com.brightcove.player.view.BrightcovePlayer;
    import com.brightcove.player.analytics.Analytics;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
    	BrightcoveVideoView brightcoveVideoView = (BrightcoveVideoView) findViewById(R.id.brightcove_video_view);
    
    	Analytics analytics = brightcoveVideoView.getAnalytics();
    	analytics.setAccount("123456789");
    
    	MediaController controller = new MediaController(this);
    	brightcoveVideoView.setMediaController(controller);
    	brightcoveVideoView.add(Video.createVideo("http://solutions.brightcove.com/bcls/assets/videos/Bird_Titmouse.mp4", DeliveryType.MP4));
    	brightcoveVideoView.start();
    }
     

    次に、SDKアーキテクチャ内でイベントがどのように機能するかを見てみましょう。


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