Acceder a vídeo de YouTube desde el proyector de Flash (local)
Hola, esto es lo que me está volviendo loco:
Estoy haciendo una aplicación tipo Scrapblog para un portal educativo. Los usuarios pueden arrastrar swf's, imágenes que previamente subieron, textos... al escenario colocarlos dónde quieran, cambiarles el tamaño, voltearlos y guardarlo como un trabajo para que los demás lo vean. Quería añadir la opción de usar videos de youtube y lo planteé de esta forma: Los usuarios arrastran un mc al escenario donde escriben la URL del video de youtube. Esta url la guardo en una base de datos. Cuando los demás usuarios acceden para ver el trabajo recupero los datos de la base de datos y si detecta que hay un video de youtube coloca un mc en en escenario (con la posición y tamaño con el que se guardó) y llama al video.
El código con el que llamo al video es el siguiente:
System.security.allowDomain("*");
direccion = "http://www.youtube.com/watch?v=ZncRiLqyD64";
//direción de ejemplo que se recoge de la base de datos
array_direccionTemporal = new Array();
array_direccionTemporal = direccion.split("=");
id_video = array_direccionTemporal[1];
mi_mc.loadMovie("http://www.youtube.com/v/"+id_video+"&noscale=true&hl=es&fs=1&color1=0x234900&color2=0x4e9e00");
En la web funciona perfectamente pero además de la versión web, se hará una versión del portal para que los colegios instalen de manera local en los pcs de las escuelas... cuando intento ejecutar esta codigo desde un exe (proyector windows) da error de seguridad que no sé como evitar:
*** Violación de la seguridad Sandbox ***
El dominio de seguridad 'http://s.ytimg.com/yt/swf/cps-vfl64504.swf' ha intentado acceder al contexto incompatible 'http://www.youtube.com/swf/l.swf?swf=http%3A//s.ytimg.com/yt/swf/cps-vfl64504.swf&video_id=ZncRiLqyD64&rel=1&showsearch=1&eurl=http%3A//www.youtube.com/v/ZncRiLqyD64%26noscale%3Dtrue%26hl%3Des%26fs%3D1%26color1%3D0x234900%26color2%3D0x4e9e00&iurl=http%3A//i3.ytimg.com/vi/ZncRiLqyD64/hqdefault.jpg&sk=-IlXY3_-d90rXLYy4zAL0vwPoyM2ekzzC&use_get_video_info=1&load_modules=1&noscale=true&fs=1&color1=0x234900&color2=0x4e9e00&hl=es'
*** Violación de la seguridad Sandbox ***
Se ha detenido la conexión con null - no se permite desde http://s.ytimg.com/yt/swf/cps-vfl64504.swf
-- Los SWF remotos no pueden acceder a archivos locales.
*** Violación de la seguridad Sandbox ***
Se ha detenido la conexión con null - no se permite desde http://s.ytimg.com/yt/swf/cps-vfl64504.swf
-- Los SWF remotos no pueden acceder a archivos locales.
Por más que he busco no encuentro una solución...
juancho
Por si a alguien le interesa:
Hace tiempo que terminé con este proyecto aunque nunca comenté mis avances... Hay una forma muy cómoda de usar videos de YouTube en nuestras webs flash, se trataría de tener un pequeño clip swf (que se encargaría de cargar y reproducir el vídeo) al que le pasaríamos la id de dicho vídeo.
El código que deberíamos usar es el siguiente:
disablekb = 1;//Esto evita que el vídeo se reproduzca al presionar la barra espaciadora.
calidad = "&fmt=22" //&fmt=22 &fmt=18 &fmt=6
ytPlayerLoaderListener = {};
var loadInterval:Number;
ytPlayerLoaderListener.onLoadInit = function() {
loadInterval = setInterval(checkPlayerLoaded, 250);
};
function checkPlayerLoaded():Void {
if (ytplayer.isPlayerLoaded()) {
ytplayer.addEventListener("onStateChange",onPlayerStateChange);
ytplayer.addEventListener("onError",onPlayerError);
ytplayer.cueVideoById(id_video);
ytplayer._width = 800;
ytplayer._height = 600;
ytplayer._visible = true;
loadIndicator._visible = false;
clearInterval(loadInterval);
}
}
ytPlayerLoader = new MovieClipLoader();
ytPlayerLoader.addListener(ytPlayerLoaderListener);
ytPlayerLoader.loadClip("http://gdata.youtube.com/apiplayer?disablekb=1",ytplayer);
this.desactivo_btn.onRollOver = function() {
this.useHandCursor = false;
};
Esto carga un thumbnail del video (que nos servirá para hacer una galería por ejemplo), para cargar el vídeo en sí deberemos usar:
ytplayer.loadVideoById(id_video+calidad);
en vez de:
ytplayer.cueVideoById(id_video);
Esta orden sa la podemos asociar a un botón play/pause o como mejor nos venga para usar las órdenes:
ytplayer.pauseVideo();
ytplayer.playVideo();
Ventd'Aval
es chungo creo... te recomiendo en todo caso usar este player:
http://code.google.com/intl/es/apis/youtube/js_api_reference.html
http://code.google.com/intl/es/apis/youtube/chromeless_player_reference.html
Aunque temo que te seguira tirando el error de seguridad (lo que pasa es que el swf de youtube a su vez carga otro swf, para evitar que puedas tocar nada dentro :S)... supongo que usando algun tema tipo ZINC, o incluso AIR, lo podrias apañar... pero no estoy seguro...