Cargar un video de Youtube en un player de Flash con ActionScript v.2 (AS2)
Actualización 30/Oct/2008: Solucionado ¡¡¡ Visita el post “Descargar un archivo de video flv de youtube.com con ActionScript2 (AS2)” con el nuevo script.
Actualización 27/Oct/2008: Youtube ha realizado cambios que impiden la descarga de los videos en formato flv según el script que describo más abajo.
- – -
Me ha costado encontrar información adecuada en inglés y menos en español, pero al final, gracias al blog de Abdul Qabiz hallé el script adecuado.
createEmptyMovieClip("mc",getNextHighestDepth());
var _mcl:MovieClipLoader = new MovieClipLoader();
_mclListener = new Object();
_mclListener.onLoadInit = function(target:MovieClip) {
var _lv:LoadVars = new LoadVars();
_lv.decode(target._url.split("?")[1]);
_root.videoplayer_mc.contentPath = "http://www.youtube.com/get_video.php?"+"video_id="+_lv.video_id+"&t="+_lv.t;
_mcl.unloadClip(target);
};
_mcl.addListener(_mclListener);
_mcl.loadClip("http://es.youtube.com/v/2OBZHB5I89A",mc);
Lo he retocado un poco, pero el mérito es casi todo de Abdul. Y digo casi todo por que cuando pruebas el script en su versión AS2, este no funciona en Internet Explorer, aunque si en Firefox y Ópera. Y la solución la da un comentario del post, escondido casi al final de los 99 que tiene, (uff¡¡¡). Solo había que sustituir “onLoadStar” por “onLoadInit” en la cuarta linea: _mclListener.onLoadInit = function(target:MovieClip) {
El script de ejemplo está pensado para que funcione junto con el componente MediaPlayer que viene por defecto en el FLash8 y CS3.
Solo hay que arrastrarlo desde la pestaña de componentes al escenario, darle un nombre de movieclip, en mi caso “videoplayer_mc“, y añadir el script en el mismo frame pero en otra capa. Todo en la linea principal de tiempo.
Antes se podía acceder a los videos de Youtube añadiendo como parámetro de url, la página propia del video. Por ejemplo: “http://es.youtube.com/v/2OBZHB5I89A”.
Pero desde hace un tiempo esto no es suficiente y hay que añadir un parámetro más, que se obtiene en la respuesta del servidor de Youtube.
Para ver de que hablo:
La URL http://es.youtube.com/watch?v=2OBZHB5I89A también se puede escribir de esta manera: http://es.youtube.com/v/2OBZHB5I89A.
Simplemente se ha sustituido la cadena “watch?v=” por “/v/“.
Cuando se solicita la nueva dirección, el navegador devuelve en la barra de direcciones esta otra ruta: http://es.youtube.com/swf/l.swf?video_id=2OBZHB5I89A&rel=1&eurl=&iurl=http%3A//s3.ytimg.com/vi/2OBZHB5I89A/default.jpg&t=OEgsToPDskLL1pfly-W5a5NQnX3gbuKO
Donde lo que nos interesa se encuentra al final, bajo el valor de la variable “t“.
El script simplemente lo captura y monta el url necesario.
Os podeis bajar un ejemplo .fla: videoyoutube.zip.
