Introducción al SDK de aplicaciones Video Cloud para iOS

Product
Video Cloud
Aplicable a roles
Desarrollador
Versión
Brightcove 5
Edición
Express 499, Pro, Enterprise

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.

Aplicación de ejemplo OnePlanet

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.

Vídeo de demostración de OnePlanet

 

También puede obtener esta aplicación gratuita para el iPhone o el iPad en el App Store de iTunes.

Instalación del SDK de aplicaciones Video Cloud para iOS en Xcode

Para instalar el SDK de aplicaciones de Video Cloud para iOS:

  1. Abra Xcode y cree o abra un proyecto de Xcode.
  2. Seleccione el destino del proyecto ("Project's Target") y luego Get Info (haga clic en el destino en el panel de xcode, y luego pulse command-I o File > Get Info).
  3. Elija la ficha "Build".
  4. Haga doble clic en la propiedad Other Linking Flags en la sección Linking de la lista Settings y añada el siguiente indicador:
      -all_load -ObjC
    
  5. Abra la ficha "General" y haga clic en el botón de suma de la sección Linked Library.
    Aparecerá un cuadro de diálogo. Haga clic en el botón Add Other....
  6. Ahora seleccione el archivo libBrightcoveMediaAPI.a, distribuido en la carpeta lib del archivo ZIP de la Media API de Video Cloud.
  7. Repita los pasos 5 y 6 con el archivo libBCiPhoneKit.a, distribuido en la carpeta lib del archivo ZIP del kit de Video Cloud para el iPhone.
  8. Cierre los ajustes del destino.
  9. Abra los ajustes del proyecto (Project > Edit Project Settings).
  10. En la sección Search Paths, en el encabezado Header Search Paths, añada el directorio de su equipo en el que vaya a colocar el archivo ZIP de la Media API de Video Cloud, seguido por /lib. Por ejemplo, si guardase bc-media-api-1.2.1 en la ruta /Developer/Brightcove de su equipo, deberá indicar /Developer/Brightcove/bc-media-api-1.2.1/lib. IMPORTANTE: Asegúrese de que la casilla de verificación "recursive" esté activada.
  11. En la sección "Search Paths", en el encabezado "Header Search Paths", añada el directorio de su equipo en el que vaya a colocar el kit de Video Cloud para el iPhone, seguido por /lib. Por ejemplo, si guardase bc-ipad-iphone-kit-1.1.0 en la ruta /Developer/Brightcove de su equipo, deberá indicar /Developer/Brightcove/bc-ipad-iphone-kit-1.1.0/lib .IMPORTANTE: Asegúrese de que la casilla de verificación "recursive" esté activada.
  12. Cierre los ajustes del proyecto.
  13. Añada los entornos de Apple necesarios a su proyecto. En la sección 'Frameworks' de su proyecto en Xcode, asegúrese de que aparezcan todos estos entornos:
  • Foundation.framework
  • CoreGraphics.framework
  • UIKit.framework
  • MediaPlayer.framework
  • OpenGLES.framework
  • QuartzCore.framework.

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.

  1. Si está utilizando el reproductor de vídeo para el iPhone de Video Cloud, deberá añadir el conjunto de imágenes de Video Cloud:
  • Busque el directorio de su equipo en el que desee guardar el kit de Video Cloud para el iPhone. Contiene el archivo BCMoviePlayer.bundle.
  • Arrastre este archivo a su proyecto Xcode o haga clic con el botón derecho en el árbol del proyecto en Xcode, seleccione Add > Existing Files... y seleccione el paquete para añadirlo.

    Puede estilizar estas imágenes a su gusto reemplazándolas en el paquete, siempre que conserve los nombres para sus nuevas imágenes.

Uso de la Media API

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:

  1. Cree un objeto NSError si desea información del error (opcional).
  2. Invoque un método de la Media API de Brightcove que devuelva un BCVideo, una lista de reproducción BCPlaylist o una colección BCItemCollection.
  3. Compruebe si el objeto devuelto BCObject es nulo y, en tal caso, examine el error NSError (si ha utilizado alguno).
  4. Si el objeto devuelto BCObject no era nulo, acceda a sus propiedades según las necesidades de su aplicación.

Código de ejemplo de la Media API

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

Uso de componentes del reproductor

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:

  • El contenido principal del vídeo está completo
  • El usuario ha seleccionado un vídeo relacionado

Código de ejemplo de BCPlayer

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

Etiquetas
aplicaciones, iOS, iPad, iPhone, iTunes