Hace unos días, la cadena de televisión Cuatro de España, publicó un nuevo servicio web de streaming llamado “Play Cuatro” que utiliza el streaming proporcionado por la empresa Flumotion.
Para la nueva salida de Tivion 0.0.3 (que espero que salga en unas semanas, ya os contare porque tanto retraso en sacar otra versión) me gustaría incorporar dicho canal, pero me esta siendo muy difícil conseguir la url de streaming ya que no se si apropósito o por desconocimiento no esta muy accesible.
Por tanto escribo este artículo, para reflejar mis progresos de la “decodificación” y por si alguien tiene alguna sugerencia para ayudarme en el punto donde me he quedado atascado.
Play Cuatro proporciona acceso a dos canales de streaming, Cuatro y CNN, para acceder a las url desde su página web estos son los enlaces:
Cuatro:
http://play.cuatro.com/play/#/portada/ver/cuatro-en-directo
CNN;
http://play.cuatro.com/play/#/portada/ver/cnn-en-directo
Por ejemplo, me centrare en la de Cuatro, ya que una vez obtenga su url de streaming, para CNN será similar.
En el código fuente podemos ver este fragmento de código:
Parece ser que el archivo Flash del reproductor se embebe mediante Javascript con la biblioteca SWFObject.
Pero por ningún lado, podemos ver el parámetro de url que se le pasa al reproductor, luego deduzco que la url la carga el reproductor flash.
Como vemos es el archivo player.swf que esta en la dirección:
http://play.cuatro.com/play/player.swf
El problema es que si accedemos a la url del reproductor directamente, este no cargará nada, únicamente el archivo flash, pero sin flujo de información. Por lo que será necesario indicarle algunos parámetros. Y he aquí el misterio.
He conseguido descifrar que se pasan los siguientes argumentos:
http://play.cuatro.com/play/player.swf?xmlurl=../assets/playlist/content.xml&livestream=1&quality=high&menu=false&wMode=opaque&allowScriptAccess=always&base=&
Con esa dirección, el player hace una llamada a una url:
http://cms.webtv.flumotion.com/gateway/cuVNaAhY5EssGNawJZSlXnEuVHMfsgFR
Esta cadena “cuVNaAhY5EssGNawJZSlXnEuVHMfsgFR” es el gatewayToken que esta definido como variable en el archivo http://play.cuatro.com/js/config.js junto con otras variables.
Además con Firebug, he conseguido averiguar otros parámetros, con los que llega a hacer otra petición más a la misma url:
El problema es que Firebug muestra hasta 5 peticiones en el sitio normal, por lo que me deben faltar más parametros y con eso el player cargaría.
Pero este no es el problema. Con Firebug, se ve que se hacen peticiones a las siguientes url:
Que en realidad cargaría:
http://195.10.10.207:80/cuatro/cuatrohigh.flv?token=8042b39788e4404e55a8383840ab69a74afb15d64afb1a86
Si pones esas url en mplayer, funciona de perlas y carga el reproductor perfectamente. Pero…(siempre hay peros), resulta que el token expira y cambia cada vez. Luego no puedo meterlo en Tivion, ya que este cambiaría cada vez. Tampoco tengo forma de sacarlo automáticamente ya que no se como el player genera este token ya que no tengo la manera de cargar el player (aún).
El token no es algo nuevo, otros canales de Tivion lo tienen, pero siempre había alguna otra url desde donde sacarlo o generarlo. Pero aquí los amigos de Cuatro se han superado…y en realidad es algo que les perjudica. Porque si ponen su canal de libre acceso, mucha más gente podrá verlo o integrarlo en otros reproductores como intento yo (sin necesidad de acceder a la página) porque simplemente les interesa ver las noticias o una serie o un programa y no necesitan entrar en la web.
Ese token, es algo que hace Flumotion de Fluendo para especificar un usuario y contraseña. Es decir, pasando un token válido, se autentifica en el sistema y se reconoce el usuario y la contraseña, porque obviamente seria un fallo de seguridad, proporcionar un usuario y contraseña públicamente en una url.
He descompilado el player.swf con Flash Decompiler, pero no tengo mucho conocimiento de Action Script y realmente sólo veo código que hace cosas, pero no lo sigo muy en profundidad. De todas maneras, parece que con los argumentos que se pasan simplemente se genera la url. La cuestión es que hace generarlos o que linea los genera para poder invocar exactamente la petición a la url de streaming.
Y eso es todo, espero que alguien le de un ojo y pueda ayudarme a sacar algo más en claro (sobre todo alguien que entienda más que yo de Flash, que es bien fácil) o espero que los señores de Cuatro recapaciten un poco y pongan la url de forma más amistosa ya en que realidad los que ganaran audiciencia serán ellos. Con suerte podremos tener un Tivion con el canal Cuatro. También estoy intentando lo mismo para la Sexta, pero esa ya es otra historia.
¿Es legal el decompilar ese flash?
@dpz: no existe ninguna al ley al respecto que lo prohiba (al menos en España), es un método de ingeniera inversa más. Es como si utilizas el programa “nm” en un binario de C para saber el nombre de funciones o intentar interpretar las direcciones de código ensamblador para conocer la dirección de salto de una condición.
Otra cosa bien distinta es que sea moral o no, llegar a tales métodos. Pero parece algo incoherente que quieran ofrecer contenidos de vídeo streaming gratuitos y no pongan facilidades a embeberlo en otros sistemas o páginas web, cuando claramente repercute positivamente en mejorar su audiencia.
Yo tengo una pagina web de television y radio online, y me estoy volviendo loco!!! :S
Mirando el codigo fuente no encontraba nada, y con el download helped consegui la direccion de http://195.10.10.207/cuatro/cuatrohigh.flv?token=8042b39788e4404e55a8383840ab69a74afb15d64afb1a86 pero no consigo hacerlo funcionar…
He probado a ejecutarlo con el VLC pero me pide un usuario y contraseña…
Ya he visto que a ti te ha pasado lo mismo… a ver si algun gurú de flash o streaming nos puede dar la solucion.
PD: yo de momento voy a usar un wrapper para poder verlo en mi web… es algo gitano pero menos da una piedra 🙂
@Ajolio: Me da que meterlo en un wrapper te va a ser complicado, porque lo cargan dinámicamente y no lo tienen embebido de una forma fácil. Pero si lo consigues estaría encantado de saberlo 😉
He intentado lo del wrapper y nada… no funciona 🙁
Seguire investigando
Desde linux, en Totem puedo pegar la url (me la da downloader helper en Firefox) y funciona, siempre que no cierre el explorador antes de iniciar la reproducción en Totem. Parece ser que hay un margen, a partir del cual, si no se continua la transmisión en streaming el “token” caduca.
Si no se cierra Totem el token nunca caduca (al menos dura más de 2 días).
En cambio en la web de Cuatro, a partir de cierta hora ya no se puede ver Cuatro (el canal) en directo.
Es muy confuso, no se que pretenden. Yo no uso el explorador para ver el streaming, por que es como encender la calefación, ya que pone la CPU al 100%. El problema tambien lo causa lo mal que va Flash en Linux.
dnog: por lo que vi, cada vez que se hace una petición al player, se genera un token, válido únicamente para la sesión del navegador (puede que incluso hasta para la IP que lo solicita se restrinja).
En mi opinión, el streaming en España esta muy “verde” y los directivos de las cadenas no están al día y no se dan cuenta de que es mejor ofrecer el contenido de forma fácil y pública para que terceros también distribuyan su señal y aumenten el share de visionado.
Yo por mi parte, ya he escrito en el formulario de la web de Cuatro, solicitándoles que hagan el streaming público y de fácil acceso. Si te quieres unir, la url es:
http://www.cuatro.com/buzon.html
(cuidado, que hasta el campo del mensaje esta limitado a pocos caracteres, asi se queja menos la gente)
Hola. Lamentablemente, mis conocimientos sobre este tema son iguales a los vuestros (o incluso peores) así que no puedo aportar mucho. Por mi parte le haré una petición a cuatro para que abran un poco su servicio de streaming.
Por otra parte, quiero agradecer a los creadores de tivion su aporte. Al crear un buen programa ligero en el campo de la televisión online (que quedó huerfano despues de la “desaparición” de zattoo) Me gustaría que continúen desarrollándolo intentaré apoyar todo lo que pueda.
Un saludo y muchas gracias
Si, no es demasiado tarde podemos intercambiar algo de experiencia. Yo he logrado capturar streaming desde algunas web inspeccionando el codigo de las paginas y colocarlos en un xml. No soy de España pero hablamos el mismo idioma. Saludos desde Uruguay.