Android: Arbeiten mit Medieninhalten

In diesem Thema erfahren Sie, wie Sie Ihre Videos mit dem Native SDK für Android abrufen und abspielen können.

Ü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.

  1. 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 oder ReferenceID. Dieser Dienst stellt die URL-Anforderungen und analysiert die zurückgegebenen Daten.

  2. 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();
    		  }
    		});
    	}
    }
  1. 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
    Videoobjekt
  2. Möglicherweise möchten Sie die benutzerdefinierten Felder, falls vorhanden, für die Video Objekt. Fügen Sie den folgenden Code zu der onVideo Callback-Methode zum Durchschleifen der customField 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 oder Lists. Auch wenn ein benutzerdefiniertes Feld a . sein kann List Typ, es ist eine Liste von String 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.