Cargar un video de Youtube en un player de Flash con ActionScript v.2 (AS2)

Day 244/365
Creative Commons License photo credit: thp365

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.

10 Responses to “Cargar un video de Youtube en un player de Flash con ActionScript v.2 (AS2)”

  1. Javier ripoll on Mayo 22nd, 2008 at 3:05 pm

    Hola:
    Estoy intentando insertar un video y no puedo.
    Directamente es que no me sale ni el reproductor.
    Me puedes enviar algun archivo de ejemplo??

    Gracias

  2. Añadido archivo de ejemplo al final del post.

    Saludos

  3. Hola antes que nada quiero agradecerte por el código y quisiera preguntarte si se puede agregar una forma de controlar la reproducción, tipo play y stop, como, hago si quiero poner mas de un video. saludos. y muchas gracias

  4. En realidad, el .fla lo que contiene es un componente de reproductor de videos.
    El script le dice el nombre y la ruta en internet para descargarlo y ya está.
    Si en vez del componente que hay en el .fla colocas otro con controles de reproducción, ya lo tienes.
    Y si quieres un selector de videos, pues ya hay que currarse un script para ello. Pero para nada dificil.

  5. muchas gracias por tu ayuda. saludos

  6. muchas gracias al fin lo encontre!!!
    un dato por resaltar es q cuando colocas el URL del video tiene q ser de esta manera:

    _mcl.loadClip(”http://es.youtube.com/v/XXXXXXX”,mc);

    obviamente el ‘xxxxxx’ es la ID del video!!
    acuerdate tiene q solo copiar la Id nada mas!
    thank you!

    si pones asi no funciona!

    _mcl.loadClip(”http://www.youtube.com/v/XXXXXXX”,mc);

  7. Gracias!

    Te agradezco mucho por la explicación tan clara y el ejemplo con el script, fue de gran ayuda. Me he pasado mucho tiempo buscando, con respuestas en otros foros que no han hecho nada más que marear más las cosas ;)

    Saludos!

  8. ;-D
    Pues lo que me ha pasado a mi también. A veces no entiendo como hay problemas cuya solución es tan complicada de encontrar. En esos casos acabo escribiendo un post que como poco siempre acercará a gente agradecida.
    Saludos

  9. hola disculpa la molestia sabe kiero ke me ayude en algo esta muy bueno el reproductor de videos de youtube pero lo ke molesta es ke para cada video tengo ke acer uno de esos no seria posible ke funciona a traves de una variable o de un root yo kiero ke salga asi ejemplo:
    http://eliseo.ueuo.com/edu/repro.swf?video=Rvs8UAzXWn0
    pero no reproduce nada como aria eso yo le puse:
    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/”+_root.video+”",mc);

    plis ayudame como aria eso

  10. Hola Eliseo
    Mira para pasar una variable en una URL la página debe tener la extensión htm, html, php, asp, y otras mas, pero no swf como en tu ejemplo.

    Podría ser así
    http://eliseo.ueuo.com/edu/repro.php?video=Rvs8UAzXWn0

    Mediante php o javascript capturas el valor de la variable video y lo añades en el tag object del swf mediante el parámetro FlashVars.

    Y finalmente dentro del swf recuperas la varible mediante actionscript.

    Ya se que es una explicación muy abreviada, pero de verdad que no dispongo de tiempo para montar un ejemplo operativo.

    Saludos

Leave a Reply