Hola!!!

tengo un SWF que carga unos videos de youtube por medio de un XML y un PHP llamado: PHP Youtube Downloader 2.0

lo hice basado en este tutorial:

Código :

http://www.leobaraldi.com.ar/2009/12/incluir-videos-de-youtube-en-tu-swf-descagar-video-youtube-con-flash-lista-personalizada-de-videos-youtube-en-flash-2/


la cosa es que no carga el video ni en local ni en el servidor

este es el XML:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<VIDEOS volumen="100">
<video id="Mp251GQE-lI" titulo="El unico que sirve">
<![CDATA[este video si se ve]]>
</video>
<video id="GF4qad2sj00" titulo="Capusotto">
<![CDATA[Me encanta este video!]]>
</video>
<video id="6qEcX01WrNk" titulo="Previa de Soda en Cba">
<![CDATA[Se presento soda y fue toda una fiesta, impresionante!]]>
</video>
<video id="do1dAX-IVTE" titulo="El bananero - Harry Potter">
<![CDATA[Aca un video para morirse de risa del amigo elbananero]]>
</video>
<video id="qAWFk63Lrmw" titulo="Battlefield 2142 U2">
<![CDATA[Este un video que lo puse porque si nomas no tenia ganas de buscar ni de escribir]]>
</video>
</VIDEOS>


Este es el PHP:

Código PHP :

<?php
// File:    phpyoutube.php
// Version: 2.2
// Date:   06/04/2009
// Web:      http://blog.unijimpe.net
function getContent($url) {
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HEADER, 0);

    ob_start();
    curl_exec ($ch);
    curl_close ($ch);
    $string = ob_get_contents();
    ob_end_clean();
    return $string;    
}
function fetch_headers($url) {
   $headers = array();
   $url = trim($url);

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_HEADER, 1);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_NOBODY ,1);
   $data = curl_exec($ch);
   $errormsg = curl_error($ch);
   curl_close($ch);
               
   $headers = explode("\n", $data);
   return $headers;
}
function getYoutubeToken($id) {
   $path = "http://www.youtube.com/get_video_info?";
   $cont = getContent($path."&video_id=".$id);
   parse_str($cont, $opts);
   return $opts['token'];
}


$videoItem = trim($_GET['item']);
$videoType = "";
$videoPath = "http://www.youtube.com/get_video";

if ($_GET['type'] != "0") {
   $videoType = "&fmt=".$_GET['type'];
}
if ($videoItem != "") {
   $videoTokn = getYoutubeToken($videoItem);
   $videoURL = $videoPath."?video_id=".$videoItem."&t=".$videoTokn.$videoType;
   $headers = fetch_headers($videoURL);
   for ($i=0; $i<count($headers); $i++) {
      if (strstr($headers[$i], "ocation:")) {
         $str1 = explode("ocation:", $headers[$i]);
         $link = trim($str1[1]);
         break;
      }
   }
   //header("Location: ".$link);
   echo "video=".$link;
   exit;
}
?>


y este es el Actionscript:

Código ActionScript :

//Dominio donde esta alojado nuestro php
var dominio:String = "";
//nuestro php propiamente dicho
var FilePHP:String = "phpyoutube.php";
//nuestro xml con la lista de videos
var FileXML:String = "videos.xml";
//el valor de id del video en youtube
var id:String = "";
//
var contador:Number = 0;
//
var miXML:XML = new XML();
miXML.ignoreWhite = true;
//
var ListVideos:Array = new Array();
miXML.onLoad = function(ok) {
   if (ok) {
      ListVideos = this.firstChild.childNodes;
      cantVideos_txt.text = "total videos: "+String(ListVideos.length);
      id = ListVideos[0].attributes.id;
      cargarVideo();
      loadDtaVdo();
      //
   } else {
   }
};
miXML.load(dominio+FileXML);
//aca recibimos el resultado del php
var result_lv:LoadVars = new LoadVars();
result_lv.onLoad = function(success:Boolean) {
   if (success) {
      /*********************************************/
      //desde aqui el cambio realizado para el 08-10-2009
      var varsTemp:LoadVars = new LoadVars()
      varsTemp.decode(String(this))
      var urlText:String = varsTemp.toString()
      urlText = urlText.substr(35,urlText.length)
      urlText = urlText.split('%2C').join(',');
      urlText = urlText.split('%2E').join('.');
      urlText = urlText.split('%2F').join('/');
      urlText = urlText.split('%3F').join('?');
      urlText = urlText.split('%3D').join('=');
      urlText = urlText.split('%3A').join(':');
      my_ns.play(urlText);
      //hasta aqui el cambio realizado para el 08-10-2009
      
   } else {
      trace("Error connecting to server.");
   }
};
//enviamos los datos al php
var send_lv:LoadVars = new LoadVars();
function cargarVideo() {
   status_txt._visible = true;
   status_txt.text = "cargando...";
   send_lv.item = id;
   send_lv.type = 0;
   send_lv.sendAndLoad(dominio+FilePHP,result_lv,"GET");
}
//el encargado de cargar y reproducir el video
var my_video:Video;
var my_nc:NetConnection = new NetConnection();
my_nc.connect(null);
var my_ns:NetStream = new NetStream(my_nc);
my_video.attachVideo(my_ns);
//suavizado del video
my_video.smoothing = true;
//duracion del buffer
my_ns.setBufferTime(4);
//duracion del video
my_ns.onMetaData = function(infoObject:Object) {
   //trace(Math.floor(infoObject.duration));
};
//enviamos datos de que esta sucediendo
my_ns.onStatus = function(infoObject:Object) {
   if (infoObject.code == "NetStream.Buffer.Full") {
      status_txt._visible = false;
   }
   if (infoObject.code == "NetStream.Play.Start") {
      status_txt._visible = true;
      buffer();
   }
   if (infoObject.code == "NetStream.Play.Stop") {
      status_txt.text = "Video finalizado!";
   }
   if (infoObject.code == "NetStream.Play.StreamNotFound") {
      status_txt.text = "No se encontro el video!!!";
   }
};
//con esto sabemos si ya esta el buffer listo!
function buffer() {
   this.onEnterFrame = function() {
      var porcentaje:Number = Math.min(Math.round(my_ns.bufferLength/my_ns.bufferTime*100), 100);
      status_txt.text = "Buffer:"+porcentaje+"%";
      if (porcentaje == 100) {
         delete this.onEnterFrame;
      }
   };
}
//un efectito fade
MovieClip.prototype.fade = function(direccion:String, velocidad:Number) {
   if (direccion == "in") {
      var efecto = mx.transitions.easing.Regular.easeIn;
      this.mi_Tween = new mx.transitions.Tween(this, '_alpha', efecto, this._alpha, 100, velocidad, true);
   } else {
      var efecto = mx.transitions.easing.Regular.easeOut;
      this.mi_Tween = new mx.transitions.Tween(this, '_alpha', efecto, this._alpha, 0, velocidad, true);
   }
};
//creamos la funcionalidad de los botones y cargamos los datos de la info
function loadDtaVdo() {
   for (var i = 0; i<2; i++) {
      this["video"+i].fdoFicha_mc._alpha = 0;
      this["video"+i]._alpha = 0;
      this["video"+i].fade("in",0.5);
      var temp = this["video"+i].fdoFicha_mc;
      this["video"+i].reproducir_mc.fondo = temp;
      this["video"+i].mini_mc.loadMovie("http://img.youtube.com/vi/"+ListVideos[contador].attributes.id+"/1.jpg");
      this["video"+i].titulo_txt.text = ListVideos[contador].attributes.titulo;
      this["video"+i].descripcion_txt.text = ListVideos[contador].firstChild;
      //
      this["video"+i].reproducir_mc.id = ListVideos[contador].attributes.id;
      this["video"+i].reproducir_mc.onRelease = function() {
         video0.fdoFicha_mc._alpha = 0;
         video1.fdoFicha_mc._alpha = 0;
         this.fondo.fade("in",0.5);
         id = this.id;
         cargarVideo();
         //
      };
      if (this["video"+i].reproducir_mc.id == id) {
         this["video"+i].fdoFicha_mc.fade("in",0.5);
      }
      if (contador == ListVideos.length-1) {
         contador = 0;
      } else {
         contador++;
      }
   }
}
//accion boton siguiente
siguiente_btn.onRelease = function() {
   loadDtaVdo();
};
//


aca tengo colgado el proyecto:

Código :

http://pruebita.net84.net/


agradezco si me pueden colaborar