Streaming de vídeo: comparando el API de ustream livestream y justintv

Recientemente nos ha surgido la necesidad de conocer qué opciones hay a la hora de ofrecer contenido en streaming por Internet -vídeo, principalmente-. Son muchos los servicios que se han unido al boom del contenido distribuido en directo: justin.tv, livestream, ustream, watershed (el servicio “marca blanca” de ustream) o la joven veetle. Incluso el buen y “viejo” youtube lleva desde hace algunos meses desarrollando su plataforma.

Lo que más nos interesa en este aspecto, es la flexibilidad de la API y de qué forma podemos integrar los servicios de cada proveedor en nuestras aplicaciones. De cara al usuario, todos son en menor o mayor medida parecidos en cuanto a funcionalidad: canales, vídeos, comentarios, búsquedas.. La realidad es muy diferente al “abrir la tapa” y ver los engranajes de la API que provee cada uno. Aquí la diferencia es muy notable entre uno y otro, y entender cómo funciona cada uno es clave y decisivo para que nuestro proyecto sea cómodo de integrar y su implementación no nos de ningún dolor de cabeza.

Vamos a analizar, desde la perspectiva del programador los pros y los contras de los servicios más populares.

ustream: API fácil y sencilla

Compartiendo el contexto del origen de Internet, Ustream nació en el año 2006, cuando sus fundadores (John Ham, Brad Hunstable, y Gyula Feher) pensaron cómo podrían comunicarse en directo sus amigos del ejército con sus familias. En marzo de 2007 se liberó la beta pública, y hoy en día miles de usuarios emiten desde su teléfono móvil o su webcam.

El API de ustream es de muy fácil acceso; tan sólo se han de hacer peticiones GET al endpoint de ustream, así que esto es un punto a favor: no necesitamos enmarañarnos con SOAP o similares, una simple llamada HTTP nos dará acceso a sus servicios. Puede devolver los resultados en xml, json, html o php serializado. Esto último es muy interesante, porque nos evitamos tener que parsear los datos con una capa más. Aunque bien es cierto que hoy en día trabajar con json o xml es trivial en php, se gana un punto de sencillez.

Algo como listar todos los canales de un usuario puede resumirse como una llamada como esta: http://api.ustream.tv/php/channel/api-test-show/listAllChannels?key=yourDevKey

Casi todos los APIs de estos servicios incluyen un límite de peticiones y ustream no es una excepción. Con una clave de desarrollador estándar, el máximo es de 5.000 peticiones al día, algo que se puede quedar pequeño para quizás que cosas. Si preveemos que vamos a necesitar más llamadas, hay que contactar con ellos. O eso, o “ahorrar” el número de llamadas, usando lo que ellos llaman “parallel request generation” que no es si no una forma lujosa de decir “hacer varias peticiones a la vez con una sola llamada”

Entre los objetos a los que podemos acceder con la API de ustream están los datos de usuarios (salvo los que le identifiquen personalmente), información de los canales, vídeos, streams, o la información del estado de ustream (vamos, que si no se ha caído y está echando humo). También se permíte hacer búsquedas del contenido alojado.

Hay que hacer una distinción importante. Cada proveedor usa palabras similares para referirse a cosas distintas. En este caso, ustream utiliza “vídeo” cuando habla de streams que ya han sido emitidos y archivados, y “streams” para los vídeos que se están emitiendo ahora mismo, en directo.

Hermano de ustream, watershed es lo mismo pero en esteroides, sin la marca de ustream (y de pago). Permite muchas mayores opciones a la hora de personalizar -por ejemplo- el player de flash, una posibilidad que con la versión de ustream no podemos.

En resumen, ustream tiene un API de muy fácil uso (especialmente si usas PHP) aunque quizá cojee un poco en el lado de la personalización del aspecto. Puede ser interesante para aquellos que busquen algo sencillo que integrar en su página personal o cuando no se necesiten publicar muchos vídeos.

justin.tv: sabor open source

Justin.tv empezó siendo un proyecto personal de Justin Kan. En Marzo de 2007 se lío -casi literalmente- la manta a la cabeza. Más bien la espalda: con una cámara montada en su mochila, empezó a emitir su vida en directo, 24 horas al día, 7 días a la semana. Como es lógico, atrajo la atención de los medios, y más tarde en ese año comenzó a gestarse lo que hoy conocemos.

El sabor de la API de justin.tv tiene un toque open source. Permite, por ejemplo, hacer streaming directamente de VLC e incluye librerías listas para abrir y consumir en Python o PHP. Se accede mediante REST, y puede devolver los resultados tanto en xml como en json.

Una diferencia bastante grande con livestream, es que justin permite publicar contenido,  modificar datos usando la API o incluso enviar mensajes al chat. Perfecto para proyectos en los que queramos por ejemplo, emitir contenido desde nuestro propio sitio web o proyecto, o crear canales sin tener que pasar por su aplicación o sitio web para ello.

Otro elemento que separa a justin de ustream y los hace muy diferentes en este aspecto es la opción de personalizar totalmente el player de vídeo, algo en lo que ustream sólo tenemos acceso a través de su plataforma waterhsed. justin provee un player de funcionalidad básica que puede personalizarse totalmente usando ActionScript o Javascript.

El límite es de 45 peticiones a la API y 1,000 visiones de vídeo cada 5 minutos. Este límite puede parecer demasiado bajo, pero esto es debido a que es el que justin.tv impone a las cuentas por defecto. Para aumentarlo, es necesario contactar con ellos y decir que incluyan nuestro proyecto/aplicación en su whitelist (lista blanca).

En definitiva, una opción muy interesante si queremos tener mayor control sobre el aspecto de nuestra aplicación y lograr una mayor integración visual y funcional.

livestream: orientado a proyectos comerciales

Como su compañero ustream, livestream ofrece tanto versión gratuita como de pago. Las diferencias estriban en el límite de almacenamiento, la inclusión o no de anuncios, o el formato de vídeo (SD o HD).

El API de livestream es, sin lugar a dudas, la mejor documentada y completa de los tres servicios y claramente orientada a proyectos comerciales. Al igual que justin, se basa en REST y devuelve los datos tanto en xml como en json. El límite de peticiones es de 10 por segundo, 100 por minuto, 1000 por hora y 10000 por día. También permite la publicación de contenidos usando el API y la personalización del player de video. Creación de canales, emisión de vídeo, gestionar equipos… este API nos pone en total control del servicio.

Si conocemos Flex, el lenguaje de Adobe, contamos con un bonus. Livestream proporciona conectores para este lenguaje. Si tu proyecto está escrito en flex, no necesitarás complicarte recurriendo a librerías externas o soluciones propias.

Un detalle interesante, es que con livestream podemos obtener un thumbnail (una imagen en miniatura) de los streams en directo.

Finalmente, A modo de resumen, una tabla con las diferencias en las características fundamentales de la API de cada uno:

característica ustream justin.tv livestream
Precio Gratuito y de pago (watershed) Gratuito Gratuito y de pago
Acceso al API Peticiones GET REST REST
Formato datos API XML / HTML / JSON / PHP XML / JSON XML / JSON
Límite de peticiones 5.000 por día 45 por 5 minutos, ampliable 10 por segundo100 por minuto

1000 por hora

10000 por día

Conclusiones

Decantarnos por la elección de uno u otro dependerá de cómo queramos estructurar nuestro proyecto (si soportamos canales, si queremos cambiar el player, si vamos a ofrecer pocos vídeos…) y el lenguaje de programación que usemos.

  • Ustream está bien y su API es muy fácil de usar pero se queda algo corto; puede ser útil para páginas sencillas que no ofrezcan mucho contenido.
  • Livestream es sin duda la opción más completa en cuanto a funcionalidad. Su API es excelente, aunque para alojar proyectos algo grandes pueda ser necesario recurrir a su servicio de pago.
  • Justin.tv, viene a ser un compromiso intermedio: una API muy funcional que puede sacarnos las castañas del fuego, pero tal vez menos orientado (de momento) al mercado comercial.
Si te gusta, ¡comparte!:Tweet about this on TwitterShare on FacebookShare on LinkedInShare on Google+Share on Tumblr

Hay 5 comentarios

  • Olivia
    8 años ago · Responder

    excelente y muy claro, justo buscaba esta informacion… si pudieras incluir algo sobre de megalive, youtube live te estare aun más agradecida. saludos!

  • 8 años ago · Responder

    Hola, muy bueno el artículo, aunque no tengo muy claro lo de las peticiones. Es decir, tengo planes de transmitir un evento que puede llegar a ser visto por unas 5000 personas, cual de estos servicios es el que me quedaría mejor?. Un saludo, y gracias por compartir

  • admin Autor
    8 años ago · Responder

    En tu caso problablemente nos decantaríamos por livestream

  • Miguel Angel
    7 años ago · Responder

    Que pena que no hayais incluido quizas uno de los mas usados y comprometidos, por el que han pasado y nos han hecho conocer, todos los movimientos sociales en estos ultimos años; Tunez, Egipto, Siria y actualmente España: BAMBUSER

  • 6 años ago · Responder

    Gracias por la información, precisamente estaba pensando cual de los tres me convenía y me preguntaba en que se diferenciaban, Hasta luego y espero que sigas así.

Dejar un comentario

Tranquilo, no usaremos tu email para enviarte spam.

Loading Facebook Comments ...
Loading Disqus Comments ...