Android: Travailler avec du contenu multimédia

Dans cette rubrique, vous apprendrez comment récupérer et lire vos vidéos à l'aide du SDK natif pour Android.

Aperçu

Les clients de Video Cloud ont accès à leurs données multimédias et métadonnées à partir de Video Cloud Studio. Les clients Brightcove Player fourniront l'URL de leur contenu multimédia.

Clients Cloud vidéo

En tant que client Video Cloud, vous pouvez accéder à vos données multimédias stockées dans Video Cloud Studio. Pour plus d'informations, consultez le Exemples de code Player SDK pour Android.

Récupération des données multimédia

Vous pouvez récupérer vos données de vidéo et de liste de lecture à partir de votre bibliothèque Video Cloud en utilisant l'API de lecture. Pour plus de détails sur l'API, consultez le Présentation de l'API de lecture document.

  1. Utilisez le com.brightcove.player.edge.Catalogue méthodes de classe pour récupérer vos vidéos et listes de lecture à partir de l'API de lecture de Brightcove. Vos demandes peuvent fournir la vidéo/playlist ID ou ReferenceID. Ce service effectuera les demandes d'URL et analysera les données renvoyées.

  2. Pour cette demande, vous aurez besoin d'une clé de stratégie. Si vous n'êtes pas familiarisé avec les clés de stratégie, consultez le Présentation de l'API des règles document.

    Voici un exemple de la façon de récupérer une vidéo en utilisant le com.brightcove.player.edge.Catalog classer:

    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. Les Objet vidéo fournit des méthodes pour récupérer des informations sur les médias, comme indiqué ci-dessous :
    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();
      }
    });

    Ce qui précède Log() les méthodes renvoient les informations de média suivantes :

    Objet vidéo
    Objet vidéo
  2. Vous voudrez peut-être voir les champs personnalisés, le cas échéant, existent pour le Video objet. Ajoutez le code suivant au onVideo méthode de rappel pour parcourir le customField carte.

    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();
      }
    });

    Voici un exemple de la sortie enregistrée que vous pouvez voir à partir du code ci-dessus :

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

    Notez que les champs personnalisés peuvent être représentés comme Strings ou Lists. Même si un champ personnalisé peut être un List type, c'est une liste de String valeurs parmi lesquelles une valeur est choisie pour définir la valeur du champ.

Vidéos géo-filtrées

Le Brightcove Player SDK pour Android prend en charge les vidéos géo-filtrées.

Il existe deux manières d'ajouter un filtrage géographique à vos vidéos pour contrôler les pays dans lesquels elles peuvent (ou ne peuvent pas) être visionnées :

Dans votre application Android, lorsque vous récupérez une vidéo à l'aide de Brightcove edge Catalogue objet (API de lecture) dans un pays qui est géo-filtré pour cette vidéo, vous devriez voir ce message :

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

Clients Brightcove Player

En tant que client Brightcove Player, vous fournirez l'URL de vos ressources vidéo.

Voici un exemple d'ajout d'une vidéo à votre vue vidéo et de démarrage de la lecture :

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();
}
 

Voyons ensuite comment les événements fonctionnent au sein de l'architecture SDK.