Recursos para el desarrollo móvil con YouTube

Jarek Wilkiewicz, equipo de la API de YouTube
Septiembre de 2010

Introducción

Los desarrolladores que quieran incorporar la grabación, carga, reproducción y uso compartido de videos en sus aplicaciones para dispositivos móviles pueden usar la plataforma de YouTube para simplificar su trabajo y mejorar sus productos finales. En este artículo, se destacan algunas de las tecnologías que puedes usar en tus aplicaciones.

Grabación

El proceso de grabación de video se realiza con la plataforma móvil subyacente. Por ejemplo, tu aplicación podría activar un intent VIDEO_CAPTURE en Android:

Intent i = new Intent();
i.setAction(MediaStore.VIDEO_CAPTURE);
startActivityForResult(i, CAPTURE_RETURN);

o inicia el UIImagePickerController en iPhone iOS:

IImagePickerController *imagePicker = [[[UIImagePickerController alloc] init] autorelease];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[self presentModalViewController:imagePicker animated:YES];

Para obtener opciones de grabación más avanzadas en iOS 4 y versiones posteriores, también puedes usar la clase AVCaptureSession de AV Foundation Framework.  

Subiendo

Tu aplicación puede subir un video y sus metadatos a YouTube mediante el envío de un correo electrónico a una dirección de correo electrónico especial asociada con la cuenta de YouTube del usuario o mediante uno de los tres métodos de API: carga basada en el navegador, carga directa o carga reanudable directa. En las aplicaciones para dispositivos móviles, la carga reanudable directa es la opción más confiable, ya que permite que una aplicación se recupere correctamente de las fallas de conectividad y reanude la carga desde el punto de falla. El protocolo de carga reanudable de YouTube utiliza el mecanismo HTTP 1.1 Content-Range/Range para transferir videos por partes y, en el caso de una interrupción, para identificar la cantidad de bytes que se transfirieron correctamente.

Si bien el contenido de video real es el componente más importante de una carga, los metadatos de video son una parte integral del proceso, ya que permiten a los usuarios ubicar videos en la búsqueda y también habilitan otras funciones que se describen más adelante en este artículo. Además de elementos comunes como una categoría, una descripción y un título, las aplicaciones para dispositivos móviles pueden incluir fácilmente datos de ubicación geográfica del dispositivo GPS del teléfono. Estos datos te permiten proporcionar una búsqueda basada en la ubicación o trazar las ubicaciones de los videos en un mapa. En el caso de las aplicaciones de carga de videos que buscan minimizar la interacción del usuario, las cargas sin metadatos son otra opción. Puedes encontrar más información al respecto en esta charla de Google I/O.

Uso compartido

La API de datos de YouTube también proporciona una gran variedad de funciones para las actividades de uso compartido de videos. Al igual que otras APIs de Google Data, la API de YouTube usa un protocolo inspirado en REST que admite representaciones de datos Atom, JSON y JSON-C. Las respuestas de API compactas de JSON-C son una opción especialmente adecuada para los entornos móviles, que suelen tener limitaciones de recursos. La API expone una funcionalidad flexible de búsqueda de videos, la capacidad de comentar y calificar videos, el acceso a suscripciones, videos favoritos, playlists y un motor de recomendaciones, y una gran cantidad de funciones de comunidad que te ayudan a integrar videos en aplicaciones sociales.

Todas estas funciones se pueden incorporar en una aplicación para dispositivos móviles mediante bibliotecas cliente específicas del lenguaje de programación o mediante la interacción directa con los servidores de la API de YouTube a través de HTTP. El primer enfoque abstrae la mayor parte de la complejidad del protocolo a expensas de una mayor huella de la aplicación. El último enfoque te permite realizar interacciones manuales con los servicios de API específicos que usa tu aplicación. Al final, la elección es específica de la aplicación. Para comenzar, consulta la biblioteca Java GData para Android o la biblioteca Objective-C de GData para iPhone. Las aplicaciones de video para dispositivos móviles más complejas pueden beneficiarse de la integración con un backend de servidor. Una de ellas es YouTube Direct (Figura 1), que incluye código de servidor de código abierto preconfigurado para ejecutarse en Google App Engine, así como implementaciones de clientes de referencia de carga de videos para Android (ytd-android, que se muestra en la Figura 1) y iPhone (ytd-iphone).

Aplicación de YouTube Direct para Android
Figura 1: Aplicación de YouTube Direct para Android

Seguridad

La seguridad y la autenticación también son aspectos importantes del desarrollo de aplicaciones para YouTube para dispositivos móviles. Si bien algunas operaciones de la API están disponibles para clientes no autenticados, otras solicitudes requieren autorización, que se realiza a través de un token de autenticación enviado en la solicitud de la API. Estas operaciones incluyen las cargas de videos, así como cualquier otra operación que modifique o escriba datos, o que acceda a información privada del usuario.

La API admite tres métodos de autenticación: AuthSub, OAuth y ClientLogin. ClientLogin es el método más sencillo para usar en aplicaciones para dispositivos móviles y, en Android, se puede usar AccountManager para obtener tokens de autenticación fácilmente. Sin embargo, las aplicaciones que integran un cliente móvil y varios backends web deben considerar el uso de OAuth, que se prefiere como estándar abierto, o AuthSub, que es específico de Google. Consulta esta aplicación para ver una implementación de autenticación de OAuth de ejemplo en Android y GDataOAuthViewControllerTouch para ver una implementación de ejemplo en iPhone iOS.  

Reproducción

Por último, los videos existen para que las personas puedan mirarlos. Nuevamente, la plataforma de YouTube ofrece varias opciones.

  • La mayoría de las plataformas móviles modernas incluyen una aplicación del reproductor de YouTube, lo que permite una integración rápida. Si tu plataforma no incluye una aplicación del reproductor de YouTube, puedes descargar una. Una aplicación para dispositivos móviles inicia un reproductor con un servicio de plataforma. Por ejemplo, en Android, una aplicación usa el intent ACTION_VIEW, y en iPhone, una aplicación puede iniciar el reproductor con el método openURL de la clase UIApplication, como se describe en esta entrada de blog.
  • El sitio web móvil de YouTube, http://m.youtube.com, te permite integrar fácilmente la reproducción de video en una aplicación web.
  • Para controlar mejor la experiencia de reproducción, las aplicaciones en plataformas compatibles con Adobe Flash pueden extender el reproductor de YouTube AS3, que ofrece una reproducción de mayor calidad.