YouTube 是我们在线观看视频的最受欢迎的视频共享平台。然而,我们经常需要获取这些 YouTube 视频以供离线使用。如果您是一名 PHP 开发人员,那么您肯定正在寻找一个 PHP 脚本来将 YouTube 视频下载到本地服务器上。因此,在这篇文章中,我们将解释如何轻松地创建自己的 PHP 脚本来下载您最喜爱的 YouTube 视频。
我们知道 YouTube 没有提供任何获取原始视频的方法,但我们仍然可以下载它。由于播放器始终会向http://youtube.com/get_video_id?video_id=THE_VIDEO_ID发出 HTTP 请求来获取有关特定视频的信息。请求的结果包含一个 URL 编码的字符串,其中包含视频的位置。因此,我们需要首先获取视频的该部分。
$vid = $_GET [ 'vid' ]; // YouTube 视频 ID $vformat = $_GET [ 'vformat' ]; // 视频的 MIME 类型。例如 video/mp4、video/webm 等。 parse_str ( file_get_contents ( "http://youtube.com/get_video_info?video_id=" . $vid ), $info ); $streams = $info [ 'url_encoded_fmt_stream_map' ];
现在我们将获得所有流。由于流也是由逗号分隔的不同 URL 编码数据集。为了检索所有流,我们需要使用explode(',',$streams)将其转换为数组。
foreach ( $streams as $stream ){ parse_str ( $stream , $data ); //现在解码流if ( stripos ( $data [ 'type' ], $vformat ) !== false ){ $video = fopen ( $data [ 'url' ]. '&signature=' . $data [ 'sig ' ], 'r' ); //视频 $file = fopen ( 'video.' . str_replace ( $vformat , 'video/' , '' ), 'w' ); Stream_copy_to_stream ( $video , $file ); fclose ( $video ); fclose ($文件); echo 'Youtube 视频下载完成!现在检查下载的文件。; 休息; } }
下载 YouTube 视频的完整 PHP 脚本:
<? php $vid = $_GET [ 'vid' ]; //youtube 视频 ID $vformat = $_GET [ 'vformat' ]; //视频的MIME类型。例如 video/mp4、video/webm 等。 parse_str ( file_get_contents ( "http://youtube.com/get_video_info?video_id=" . $vid ), $info ); //解码数据 $streams = $info [ 'url_encoded_fmt_stream_map' ]; //视频的位置信息 $streams = explode ( ',' , $streams ); foreach ( $streams as $stream ){ parse_str ( $stream , $data ); //解码流if ( stripos ( $data [ 'type' ], $vformat ) !== false ){ //我们找到了格式正确的正确流 $video = fopen ( $data [ 'url' ]. '&signature=' . $data [ 'sig' ], 'r' ); //视频 $file = fopen ( 'video.' . str_replace ( $vformat , 'video/' , '' ), 'w' ); Stream_copy_to_stream ( $video , $file ); //将其复制到文件 fclose ( $video ); fclose ($文件); echo 'Youtube 视频下载完成!现在检查文件。; 休息; } } ?>
现在,您可以在将其以 PHP 文件的形式发送到服务器后这样调用它:
http : //localhost/PHP 脚本名称.php?vid=YouTube 视频 ID&vformat=视频的 MIME 类型
评论留言