Androide: Trabajar con contenido multimedia

En este tema, aprenderá cómo recuperar y reproducir sus videos usando Native SDK para Android.

Resumen

Los clientes de Video Cloud tienen acceso a sus metadatos y datos multimedia desde Video Cloud Studio. Los clientes de Brightcove Player proporcionarán la URL de su contenido multimedia.

Clientes de Video Cloud

Como cliente de Video Cloud, puede acceder a sus datos multimedia almacenados en Video Cloud Studio. Para obtener más información, consulte el Reproductor SDK para ejemplos de código de Android.

Recuperando datos de medios

Puede recuperar los datos de su video y lista de reproducción de su biblioteca de Video Cloud utilizando la API de reproducción. Para obtener detalles sobre la API, consulte la Descripción general de la API de reproducción documento.

  1. Utilizar el com.brightcove.player.edge.Catalog métodos de clase para recuperar sus videos y listas de reproducción de la API de reproducción de Brightcove. Sus solicitudes pueden proporcionar el video / lista de reproducción ID o ReferenceID. Este servicio realizará las solicitudes de URL y analizará los datos devueltos.

  2. Para esta solicitud, necesitará una clave de política. Si no está familiarizado con las claves de política, consulte la Descripción general de la API de políticas documento.

    A continuación, se muestra un ejemplo de cómo recuperar un video usando el com.brightcove.player.edge.Catalog clase:

    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. La Objeto de video proporciona métodos para recuperar información multimedia como se muestra a continuación:
    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();
      }
    });

    Lo anterior Log() Los métodos devuelven la siguiente información multimedia:

    Objeto de video
    Objeto de video
  2. Es posible que desee ver los campos personalizados, si los hay, para el Video objeto. Agregue el siguiente código al onVideo método de devolución de llamada para recorrer el customField mapa.

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

    Aquí hay un ejemplo del resultado registrado que puede ver en el código anterior:

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

    Tenga en cuenta que los campos personalizados se pueden representar como Strings o Lists. Aunque un campo personalizado puede ser un List tipo, es una lista de String valores de los que se elige un valor para establecer el valor del campo.

Vídeos filtrados geográficamente

Brightcove Player SDK para Android admite videos filtrados geográficamente.

Hay dos formas en las que puede agregar filtrado geográfico a sus videos para controlar en qué países se pueden (o no) ver:

En su aplicación de Android, cuando recupera un video usando el borde de Brightcove Catalogar objeto (API de reproducción) en un país que está filtrado geográficamente para ese video, debería ver este mensaje:

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

Clientes de Brightcove Player

Como cliente de Brightcove Player, proporcionará la URL de sus activos de video.

A continuación, se muestra un ejemplo de cómo agregar un video a su vista de video e iniciar la reproducción:

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

A continuación, echemos un vistazo a cómo funcionan los eventos dentro de la arquitectura del SDK.