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:
- 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
- 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
- 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