miércoles, febrero 04, 2009

Simulando streaming de video Flash FLV con ASP.NET

Esta solución permite reproducir video Flash FLV tal como lo hace YouTube.com de forma que podemos adelantar el video aún cuando no se haya descargado la parte que queremos ver.

La verdadera solución se encuentra en kfra de donde podremos descargar la solución tanto para .NET 1.1 como 2.0.

Pero para los que no podemos hacer modificaciones en el servidor IIS o (como yo) son amantes de las soluciones sencillas, no intrusivas y contenidas en una sola página es que armé esta versión.

Se trata de una página ASPX llamada getFlv.aspx que simplemente copiamos en nuestro sitio web e invocamos desde Flash con 2 parametros:
- v: para el nombre del video. Si comienza con “/” será el path relativo al root del sitio. Si no comienza con “/” buscará a partir del lugar donde se encuentre esta página.
- start: para indicar el byte a partir del cual quieren reproducir el video. Si no le pasamos nada, entonces devolverá el video completo.

Ejemplos:
  • http://misitio.dominio.com/videos/getFlv.aspx?v=video.flv (simplemente traerá el video ubicado en la mísma carpeta que getFlv.aspx)
  • http://misitio.dominio.com/videos/getFlv.aspx?v=/video.flv (traerá el video desde el root del sitio)
  • http://misitio.dominio.com/videos/getFlv.aspx?v=nuevos/video.flv&start=580014 (traerá el video desde la carpeta "nuevos" ubicada en la misma carpeta que getFlv.aspx y lo entregará a partir del byte 580014)
Hay que tener en cuenta que esta página ASPX lo único que hace es devolver el video FLV a partir del byte indicado por parámetro. El resto dependerá del player.

En la el mismo post de kfra hay un player que pueden usar, pero si quieren desarrollar uno ustedes, deberán tener en cuenta que, para poder reproducir el video, deben pasar un start que coincida con un Key Frame. Para esto deben buscar en la metadata del streaming donde encontrarán dos arrays, Times y FilePositions. No todos los FLV contienen esta metadata y en estos casos deberán usar alguna aplicación para agregarla.

Aquí les dejo el link a getFlv.aspx.

Por supuesto que todo el crédito es de kfra. Yo sólo hice uso de la programación orientada al copy-paste.

Saludos