Obtener video FLV de YouTube

Actualización

Debido a que este código no funciona, el nuevo código (aunque el formato del video ya no es FLV, sino WEBM) puede consultarse aquí: http://vida.danguer.com/2011/10/20/obtener-video-webm-de-youtube-antes-flv-en-php/

——————————————————————–

Esta es la nueva manera de obtener el video de YouTube, los parámetros para get_video.php quedan iguales (video_id y t), pero t cambia y ahora no se obtiene al cargar el video, se tiene que llamar a otra URL para obtener esa información.

El método es muy fácil, los pasos son:

  1. Llamar a: 
    http://www.youtube.com/get_video_info.php?video_id=VIDEOID
    Donde VIDEOID es el id del video que vamos a obtener el archivo FLV (las ligas de YouTube para ver el video son como: http://www.youtube.com/v/VIDEOID)
    Tomaremos por ejemplo este:
    http://www.youtube.com/get_video_info.php?video_id=HDi9OeJqwG4 
  2. El resultado será en texto y tendrá muchas variables como:
    status=ok&title=Rob+Dougan+-+Furious+Angels&muted=0&avg_rating=4.8496592845&creator=eitch&length_seconds=237&vq=None&fmt_map=&token=OEgsToPDskKxBcum6P4BEStM-z3qkYZW&thumbnail_url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2FHDi9OeJqwG4%2Fdefault.jpg&allow_ratings=True&plid=AARgErHUJPLX2RPWAAAAoABoIAE&track_embed=1
  3. De aqui solamente necesitamos obtener el parámetro token y pasarlo al ya conocido get_video.php:
    http://www.youtube.com/get_video.php?video_id=HDi9OeJqwG4&t=OEgsToPDskKxBcum6P4BEStM-z3qkYZW

Con esto ya obtendremos el FLV deseado, en PHP la rutina sería la siguiente:

<?php
//video id por defecto
$video_id = 'HDi9OeJqwG4';

if (isset($_REQUEST['video_id']))
        $video_id = trim($_REQUEST['video_id']);

//obtener informacion
$url_info = 'http://www.youtube.com/get_video_info.php?video_id='.$video_id;
$info = file_get_contents($url_info);

$vars = array();
parse_str($info, $vars);

$url_flv = 'http://www.youtube.com/get_video.php?video_id='.$video_id.'&t='.$var
s['token'];

print 'Archivo FLV: '.$url_flv;
?>

Con esto obtenemos la URL del archivo FLV.

Es importante notar que en Flex/Flash no se podrá cargar diréctamente get_video_info.php por la política del crossdomain de YouTube así que hay que utilizar un proxy.

El demo lo pueden probar desde:
http://demo.livesourcing.com/blog_vida/articulos/DanguerArticle_Youtube/?video_id=VIDEOID
Donde VIDEOID es el id del video de YouTube de su preferencia =)

El código fuente lo pueden descargar de:
https://github.com/danguer/blog-examples/blob/master/php/youtube/get-flv.php
 

 

 

 

Temas similares

  • Raquel

    Hola porque no pones el codigo de fuente en otro archivo .txt por que el archivo .tar.gz no lo puedo abrir…

  • http://www.danguer.com admin

    Hola Raquel,
    Descarga el 7-zip (http://www.7-zip.org) es un excelente descompresor de archivos que soporta la extensión tar.gz

  • http://www.danguer.com admin

    Se me pasó decirte que el archivo lo único que tiene es un archivo index.php con el código PHP de esta página, así que puedes darle en “copy to clipboard” y tendrás el mismo contenido.

  • Raquel

    Hola ¿como podria obtener el titulo de un video de youtube con php(get_video_info.php)?

  • http://www.danguer.com admin

    Hola raquel, está en la variable $vars :
    print $vars['title'];

    Saludos,

  • Raquel

    Graciass.
    Como podria reducir todo el codigo en uno mas pequeño esque en mi web a los videos le quiero poner el nombre que tiene en youtube pero quisiera un cogido mas pequeño.
    Saludos

  • Marcos

    Hola me gustaria saberpor que el codgio cuando lo pongo en mi web me sale un error.. ¿esta bien el codigo?

  • Brandon

    Hola el codigo esta bien solo que hay que sustituir esto ‘ y esto ’ por comillas y tienes que tener un hosting que tenga la opcion cURL de PHP

  • http://briandb.wordpress.com Briand

    Como termina el codigo para poder ver o bajar el flv?
    Tu hablas de un proxy, me lo puedes aclarar?

    Gracias!

    Muy buena info.

  • http://vida.danguer.com/2011/10/20/obtener-video-webm-de-youtube-antes-flv-en-php/ Obtener video webm de Youtube (antes FLV) en PHP | Dr. Danguer y Mr. Daniel

    [...] tiempo había publicado el código para obtener el código de FLV de Youtube (http://vida.danguer.com/2009/01/09/obtener-video-flv-de-youtube/), esto ya no funciona debido a que el archivo cambió y que Youtube ya no proporciona ahora un [...]