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.
-
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
oReferenceID
. Este servicio realizará las solicitudes de URL y analizará los datos devueltos. -
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(); } }); } }
- 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: -
Es posible que desee ver los campos personalizados, si los hay, para el
Video
objeto. Agregue el siguiente código alonVideo
método de devolución de llamada para recorrer elcustomField
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
oLists
. Aunque un campo personalizado puede ser unList
tipo, es una lista deString
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.