Überblick
Video Cloud-Kunden haben über Video Cloud Studio Zugriff auf ihre Mediendaten und Metadaten. Brightcove Player-Kunden geben die URL für ihre Medieninhalte an.
Video Cloud-Kunden
Als Video Cloud-Kunde können Sie auf Ihre in Video Cloud Studio gespeicherten Mediendaten zugreifen. Weitere Informationen finden Sie im Player-SDK für Android-Codebeispiele.
Mediendaten abrufen
Sie können Ihre Video- und Wiedergabelistendaten aus Ihrer Video Cloud-Bibliothek abrufen, indem Sie die Wiedergabe-API verwenden. Einzelheiten zur API finden Sie im Übersicht über die Wiedergabe-API dokumentieren.
-
Verwenden Sie die com.brightcove.player.edge.Catalog class-Methoden zum Abrufen Ihrer Videos und Wiedergabelisten aus der Playback-API von Brightcove. Ihre Anfragen können das Video/die Playlist liefern
ID
oderReferenceID
. Dieser Dienst stellt die URL-Anforderungen und analysiert die zurückgegebenen Daten. -
Für diese Anfrage benötigen Sie einen Richtlinienschlüssel. Wenn Sie mit Richtlinienschlüsseln nicht vertraut sind, lesen Sie die Übersicht über die Richtlinien-API dokumentieren.
Hier ist ein Beispiel für das Abrufen eines Videos mit dem
com.brightcove.player.edge.Catalog
Klasse: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(); } }); } }
- Die Videoobjekt bietet Methoden zum Abrufen von Medieninformationen wie unten gezeigt:
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(); } });
Obenstehendes
Log()
-Methoden geben die folgenden Medieninformationen zurück:Videoobjekt -
Möglicherweise möchten Sie die benutzerdefinierten Felder, falls vorhanden, für die
Video
Objekt. Fügen Sie den folgenden Code zu deronVideo
Callback-Methode zum Durchschleifen dercustomField
Karte.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(); } });
Hier ist ein Beispiel für die protokollierte Ausgabe, die Sie im obigen Code sehen können:
MainActivity: onVideo: Custom fields: Key: genre Value: Action MainActivity: onVideo: Custom fields: Key: customlist Value: customListValue1
Beachten Sie, dass benutzerdefinierte Felder dargestellt werden können als
Strings
oderLists
. Auch wenn ein benutzerdefiniertes Feld a . sein kannList
Typ, es ist eine Liste vonString
Werte, aus denen ein Wert ausgewählt wird, um den Wert des Felds festzulegen.
Geogefilterte Videos
Das Brightcove Player SDK für Android unterstützt geogefilterte Videos.
Es gibt zwei Möglichkeiten, wie Sie Ihren Videos Geofilter hinzufügen können, um zu steuern, in welchen Ländern sie angezeigt werden können (oder nicht):
Wenn Sie in Ihrer Android-App ein Video mit Brightcove Edge abrufen Katalog Objekt (Wiedergabe-API) in einem Land, das für dieses Video geofiltert ist, sollten Sie diese Meldung sehen:
error { message: Access to this resource is forbidden by access policy.
client_geo: us
error_subcode: CLIENT_GEO
error_code: ACCESS_DENIED }
Brightcove Player-Kunden
Als Brightcove Player-Kunde geben Sie die URL für Ihre Video-Assets an.
Hier ist ein Beispiel für das Hinzufügen eines Videos zu Ihrer Videoansicht und das Starten der Wiedergabe:
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();
}
Sehen wir uns als Nächstes an, wie Ereignisse innerhalb der SDK-Architektur funktionieren.