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.