概要
Video Cloud のお客様は、Video Cloud Studio からメディアデータとメタデータにアクセスできます。Brightcoveプレーヤーのお客様は、メディアコンテンツの URL を指定します。
ビデオクラウドのお客様
Video Cloud のお客様は、Video Cloud Studio に保存されているメディアデータにアクセスできます。詳細については、 Android 用 Player SDK コードサンプルを参照してください。
メディアデータを取得しています
再生 API を使用して、Video Cloud ライブラリからビデオとプレイリストデータを取得できます。API の詳細については、「再生 API の概要」ドキュメントを参照してください。
-
com.brightcove.Player.edge.calog クラスのメソッドを使用して、Brightcoveの再生 API から動画と再生リストを取得します。あなたの要求は、
ID
ビデオ/プレイリストを提供することができますReferenceID
.このサービスは、URL 要求を行い、返されたデータを解析します。 -
このリクエストには、ポリシーキーが必要です。ポリシーキーに慣れていない場合は、「ポリシー 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(); } }); } }
- 以下に示すように、ビデオオブジェクトは、メディア情報を取得するためのメソッドを提供します。
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
そのオブジェクトに存在することを確認することができます。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
またはとして表すことができることに注意してくださいLists
。List
カスタムフィールドには型を指定できますが、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アーキテクチャ内でイベントがどのように機能するかを見てみましょう。