Script para descargar vídeos de YouTube en PHP

Script para descargar vídeos de YouTube en PHP

@programacion

YouTube es una popular plataforma dedicada a compartir vídeos donde también puede ver vídeos de otros usuarios. Sin embargo, a menudo necesitamos obtener dichos videos de YouTube para utilizarlos cuando no tengamos conexión. Si eres desarrollador de PHP, seguramente habrás buscado algún script de PHP para descargar videos de YouTube en tu equipo. Si no has encontrado ninguno, en este artículo te explicaré cómo crear de forma sencilla tu propio script para descargar tus videos favoritos de YouTube.

Sí, sabemos que Youtube no cuenta con ningún método oficial para descargar vídeos, pero eso no significa que no podamos hacerlo. Sabemos que el reproductor siempre emite una solicitud HTTP a http://youtube.com/get_video_id?video_id=EL_ID_DEL_VIDEO para obtener información sobre un video concreto. El resultado de dicha solicitud contiene una cadena codificada en la que viene la ubicación del vídeo. Así pues, lo que tendremos que hacer es descargarnos dicho fichero.

$vid = $_GET['vid']; // Youtube video ID
$vformat = $_GET['vformat']; // The MIME type of the video. e.g. video/mp4, video/webm, etc.
parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=".$vid),$info);
$streams = $info['url_encoded_fmt_stream_map'];

Ahora vamos a recuperar todos los streams. Los stream son conjuntos de URLS codificadas separadas por comas. Con el fin de recuperar todos los streams, tendremos que convertirlo en un array mediante el uso de explode(',', $stream).

$streams = explode(',',$streams);

Finalmente, debemos recorrer el bucle por todos los streams para obtener la información.

foreach($streams as $stream){
parse_str($stream,$data); //Now decode the stream
if(stripos($data['type'],$vformat) !== false){
$video = fopen($data['url'].'&signature='.$data['sig'],'r'); //the video
$file = fopen('video.'.str_replace($vformat,'video/',''),'w');
stream_copy_to_stream($video,$file);
fclose($video);
fclose($file);
echo 'Youtube Video Download finished! Now check downloaded file.';
break;
}
}

Aquí tienes el script completo de PHP para descargar vídeos de YouTube.

<?php
$vid = $_GET['vid']; //the youtube video ID
$vformat = $_GET['vformat']; //the MIME type of the video. e.g. video/mp4, video/webm, etc.
parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=".$vid),$info); //decode the data
$streams = $info['url_encoded_fmt_stream_map']; //the video's location info
$streams = explode(',',$streams);
foreach($streams as $stream){
parse_str($stream,$data); //decode the stream
if(stripos($data['type'],$vformat) !== false){ //We've found the right stream with the correct format
$video = fopen($data['url'].'&signature='.$data['sig'],'r'); //the video
$file = fopen('video.'.str_replace($vformat,'video/',''),'w');
stream_copy_to_stream($video,$file); //copy it to the file
fclose($video);
fclose($file);
echo 'Youtube Video Download finished! Now check the file.';
break;
}
}
?>

A continuación, te explico cómo llamar al script para descargar vídeos de Youtube si es que el script se encuentra en un servidor local.

http://localhost/PHP SCRIPT NAME.php?vid=THE YOUTUBE VIDEO ID&vformat=THE MIME TYPE OF THE VIDEO

Fuente: phpzag.com



Report Page