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 mediante 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 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 del framework de AV Foundation.  

Subiendo

Tu aplicación puede subir un video y sus metadatos a YouTube enviando un correo electrónico a una dirección de correo electrónico especial asociada con la cuenta de YouTube del usuario o con uno de los tres métodos de la API: carga basada en el navegador, carga directa o carga directa reanudable. En el caso de 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 de forma elegante de las fallas de conectividad y reanude una 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 habilitar otras funciones que se describen más adelante en este artículo. Además de los 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 obtener más información sobre este tema en esta conferencia 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 la funcionalidad flexible de búsqueda de videos; la capacidad de comentar y calificar videos; acceso a suscripciones, videos favoritos, playlists y un motor de recomendaciones; y una serie de funciones de la 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 costa de un mayor espacio en la aplicación. El último enfoque te permite realizar interacciones manuales con los servicios de API específicos que usa tu aplicación. En última instancia, la elección es específica de la aplicación. Para comenzar, consulta la biblioteca de GData para Java para Android o la biblioteca de GData para Objective-C 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 para Android de YouTube Direct

Seguridad

La seguridad y la autenticación también son aspectos importantes del desarrollo de aplicaciones de 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 que se envía 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 para dispositivos móviles y varios backends web deben considerar usar OAuth, que se prefiere como estándar abierto, o AuthSub, que es específico de Google. Consulta esta aplicación para ver un ejemplo de implementación de autenticación de OAuth en Android y GDataOAuthViewControllerTouch para ver una implementación de muestra en iPhone iOS.  

Reproducción

Por último, los videos existen para que las personas puedan mirarlos. Una vez más, la plataforma de YouTube ofrece varias opciones.

  • La mayoría de las plataformas móviles modernas vienen integradas con una aplicación de reproductor de YouTube, lo que permite una integración rápida. Si tu plataforma no incluye una aplicación de 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.