Este documento describe el SDK de aplicaciones de Video Cloud para iOS, con el que podrá desarrollar sus propias aplicaciones nativas para iOS con el fin de difundir sus vídeos de Video Cloud tanto en dispositivos iPhone y iPad como en otras plataformas iOS de Apple. Además de este artículo de primeros pasos, consulte estos otros documentos:
El SDK de aplicaciones Video Cloud para iOS es un conjunto de bibliotecas Cocoa/Objective-C para emplear la Media API de Video Cloud y para reproducir vídeos en reproductores personalizados de Video Cloud en dispositivos Apple iOS como el iPhone, el iPad y el iPod Touch. La Media API proporciona una interfaz Cocoa/Objective-C para las APIs de vídeo y de listas de reproducción de Video Cloud. El componente del reproductor añade funcionalidad de correo electrónico y compartición en Twitter, así como sobreimpresiones de vídeos relacionados y populares en el reproductor de vídeo estándar de iOS.
La expansión de la tienda virtual App Store de iTunes y la popularidad de los dispositivos iPhone y iPad está aumentando la demanda de archivos multimedia en dispositivos móviles. Si utiliza este SDK para crear aplicaciones iOS nativas, podrá ofrecer a sus espectadores una experiencia única. Puede acceder fácilmente al contenido y a los metadatos de los vídeos y adaptar la aplicación a los espectadores itinerantes para mantener su marca visible en todo momento ante su audiencia.
Si se está planteando la opción de crear una aplicación iOS, nunca es tarde para preparar el contenido de vídeo para su difusión en dispositivos móviles. Encontrará más información al respecto en codificación de vídeos para su entrega en dispositivos móviles. Puede que también se esté planteando crear una aplicación web para móviles; más información sobre cómo Brightcove puede ayudarle a alcanzar este objetivo.
El SDK de aplicaciones Video Cloud para iOS requiere la versión 3.1 o superior del SDK de Apple para iOS.
Hemos utilizado la versión 2.1.x del SDK de aplicaciones Video Cloud para iOS para desarrollar una aplicación de ejemplo nativa para el iPhone, llamada OnePlanet. Averigüe cómo desarrollamos OnePlanet y descargue el código fuente de las versiones para iPhone e iPad de la aplicación.
También puede obtener esta aplicación gratuita para el iPhone o el iPad en el App Store de iTunes.
Para instalar el SDK de aplicaciones de Video Cloud para iOS:
-all_load -ObjC
Si falta cualquiera de estos entornos, haga clic con el botón derecho en el grupo 'Frameworks' de Xcode, seleccione Add y Existing Frameworks... para abrir un explorador de archivos y seleccione y añada los entornos a su proyecto. NOTA: Si sólo desea utilizar las Media APIs de Video Cloud y no el reproductor de vídeo de Video Cloud para el iPhone, no necesita incluir MediaPlayer.framework, OpenGLES.framework ni QuartzCore.framework.
La clase BCMediaAPI actúa como "fachada" para todas las llamadas a la Media API de Video Cloud. Permite a los desarrolladores generar una sola instancia para cualquier llamada que sea necesaria:
BCMediaAPI *bc = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
Las invocaciones se gestionan mediante punteros de error de estilo Cocoa. Por lo tanto, el patrón para todas las invocaciones es el siguiente:
// No olvide incluir esta línea en su código fuente (sin comentarios):
// #import "BCMediaAPI.h"
BCMediaAPI *bc = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
NSError *err;
BCVideo *video = [bc findVideoById:1234 error:&err];
if (!video) {
// si el resultado es nulo y enviamos el argumento de error opcional,
// el error será alimentado por todos los errores subyacentes comunicados por
// el servidor de Video Cloud. Podemos utilizar el siguiente método para volcar
// la información de usuario de NSError, donde se comunican los errores subyacentes,
// en un NSString para registrar o para otros fines:
NSString *errStr = [bc getErrorsAsString:err];
NSLog(errStr);
}
La clase BCPlayer es el componente público que permite iniciar y detener la reproducción de los vídeos:
BCPlayer *bcPlayer = [[BCPlayer alloc] init];
Usted reproduce un vídeo usando una instancia de la clase BCVideo perteneciente a la API BCMedia. Aunque típicamente esta instancia de BCVideo se obtiene de forma dinámica usando la Media API de Brightcove, también se puede crear mediante programación. También se puede recuperar una instancia de BCVideo usando la Media API de Brightcove y omitir las propiedades de la instancia definiéndolas mediante programación.
BCVideo *myVideo = [[self getVideoObject:videoId] retain]; [bcPlayer play:activeVideo];
Si desea habilitar la compartición, también debe definir playerId en la instancia BCPlayer para poder incrustar vínculos a direcciones URL en mensajes de correo electrónico y de Twitter con el fin de dirigir a los usuarios a su reproductor de Video Cloud correcto.
Si desea mostrar vídeos relacionados o populares en el reproductor como sobreimpresión "coverflow", incluya esas matrices de instancias de BCVideo en el reproductor.
Registre un BCPlayerDelegate en el reproductor BCPlayer para implementar el protocolo BCPlayerDelegate con el fin de recibir un aviso cuando se produzcan varios eventos en el reproductor:
bcPlayer.delegate = self;
Las devoluciones de llamadas del delegado permiten acceder a eventos como los siguientes:
// No olvide incluir esta línea en su código fuente (sin comentarios):
// #import "BCPlayer.h"
- (void) playMyMovie {
NSString *apiKey = @"keyWithAdditionalURLPrivileges";
bcAPI = [[BCMediaAPI alloc] initWithReadToken:@"MyApiKey"];
double videoId = 25348489001L;
bcPlayer = [[BCPlayer alloc] init];
bcPlayer.delegate = self;
bcPlayer.playerId = 25309144001L;
// sin él, la compartición no funcionará
// Use la BCMediaAPI para crear una instancia de BCVideo:
activeVideo = [[self getVideoObject:videoId] retain];
// Establezca vídeos populares y relacionados si lo desea: puede hacerlo por
// programación, creando los objetos BCVideo, o bien automáticamente con la BCMediaAPI:
bcPlayer.popularVideos = [self getPopularVideos];
bcPlayer.relatedVideos = [self getRelatedVideos:videoId];
// NOTA: Si no establece vídeos relacionados o populares, el menú de navegación de vídeos no aparecerá
// NOTA: Si define vídeos relacionados pero no vídeos populares, o viceversa, aparecerá la navegación de vídeos,
// pero el interruptor para moverse entre vídeos populares y vídeos relacionados
// no aparecerá.
// De forma predeterminada, todos los ajustes siguientes son verdaderos, aunque puede omitirlos para controlar
// qué menús deben aparecer:
bcPlayer.shareMenuEnabled = NO;
bcPlayer.moreVideosMenuEnabled = YES;
bcPlayer.showRelatedMoviesOnComplete = YES;
// De forma predeterminada, los vídeos populares y relacionados se representan en una interfaz de
// usuario "coverflow", pero también se puede utilizar una vista UITableView para ajustar esta propiedad
// a NO. Esto puede resultar conveniente si surgen problemas de rendimiento durante la visualización
// "coverflow" de su aplicación (el valor predeterminado de esta propiedad es SÍ)
bcPlayer.useCoverflow = YES;
// reproducir el vídeo
[bcPlayer play:activeVideo];
}
#pragma mark BCPlayerDelegate callback methods
- (void) playerComplete {
NSLog(@"Player Is Complete");
}
- (void) selectedRelatedVideo:(BCVideo *) relatedVideo {
// la aplicación tiene la opción de reclamar el control, cambiando el playerId para compartir, etc.
bcPlayer.playerId = 25309144001L; // puede ser necesario cambiar el playerId para que la compartición funcione con un nuevo vídeo
}
Si necesita ayuda o tiene cualquier pregunta, visite nuestros foros. También puede seguir la evolución del SDK de aplicaciones de Video Cloud para iOS en Twitter: http://twitter.com/bciphonesdk o registrarse para obtener actualizaciones y noticias por correo electrónico sobre nuestros SDKs para dispositivos móviles.