Flash Video (FLV) y compresión HTTP servidor – cliente

Esta entrada del blog representa a la perfección el momento en el que nos surgió la idea de crear este blog llamado (no sin razón) 2flash2furious. He aquí el proceso de calentamiento global en la oficina…

Flashero A (intentando escurrir el bulto):
Oye B, estoy migrando una web de un alojamiento a otro y los videos FLV que tenía se han vuelto locos.
Flashero B (concentrado):
Prueba a subir esto que estoy haciendo, que funciona bien a ver si también va mal.
Flashero A (con rintintin):
También va mal, gañán.
Flashero B (incrédulo, o sea, es imposible de la muerte que vaya mal, te lo juro…):
Va mal??????

Media hora después, con 3 versiones de swf distintas en el servidor los dos flasheros A y B deducen:

  • Los swf cargan correctamente los FLV en el servidor A.
  • Esos mismos SWF fallan en la carga de los FLV en el servidor B.
  • En el servidor B, la barra de carga de streaming en firefox aparece desde el inicio al 100%.
  • En el servidor B, la barra de carga de streaming en internet explorer no aparece, o aparece haciendo efectos de lo más variopinto.
  • En el servidor B, la propiedad bytesTotal de la clase netStream falla estrepitosamente al devolver el mismo valor que la propiedad bytesLoaded.

Aquí es cuando nos cagamos en acordamos de Flash, Adobe y la madre que trajo el desarrollo web a este mundo…

Lo bonito de la historia… siempre es el final…

Tras hablar con el proveedor en el que fallaba la aplicación con FLV (Hostalia), y tras arrasar la web de Adobe y Google buscando el problema que nos estaba traumatizando sin ningún fruto, empezamos a pensar que era imposible que un error tan EVIDENTE, no le hubiera pasado a nadie antes. Por suerte Jorge Solís acudió en nuestro rescate con su inmensa sabiduría y nos habló de la compresión HTTP que aplican algunos hostings para mejorar los tiempos de descarga de las webs (por ejemplo), y sus efectos nocivos sobre las cabeceras de los ficheros FLV donde casualmente se pasan los valores del bytesTotal, etc…

Tras contactar nuevamente con Hostalia, nos comunican que efectivamente tienen habilitada la compresión para el tráfico HTTP server – cliente, y muy diligentemente deciden que no es lógico aplicarla a ficheros FLV, con lo que actualizan TODOS sus servicios de hosting para evitar el problema (y aprovecho para felicitar públicamente a Hostalia por el magnífico servicio de atención al cliente del que disponen) y además lo hacen de forma inmediata, con lo que comprobamos que todo vuelve a la normalidad.

Moraleja:

“Si la precarga de un fichero FLV no te funciona correctamente, y has comprobado que todo está como debe ser, tracea por pantalla el valor de bytesTotal de la clase netStream. Si ocurre lo que hemos descrito… habla con tu proveedor de hosting sobre la compresión de tráfico HTTP para ficheros FLV”.

Un capón a Adobe por no contemplar esta nota técnica (que por lo que hemos podido comprobar testeando en varios servidores con los que trabajamos, no es nada extraño cuando se habla de alojamientos compartidos…) en la documentación de la clase netStream, o de la propiedad bytesTotal.