如何使用PHP下载Youtube视频?

4

我正在寻找从YouTube下载视频的方法...

当然,我已经使用并尝试了所有代码和脚本,但它们都失败了...

因此,我需要新的代码来帮助我...


3
请发布您尝试过的代码,我们将从那里开始。 - dynamic
大多数人只是使用浏览器来查看视频,这将下载.flv文件到他们的计算机上... 这属于您指定的“任何方式”。 - Marc B
2个回答

5
使用外部工具来完成这个任务。youtube-dl 是一个很好的选择,并且可以在PHP中轻松使用:
$url = escapeshellcmd($url);
exec("youtube-dl $url -O /tmp/video.flv");

如果你想的话,可以用PHP重写它。 - mario
我尝试在服务器上安装youtube-dl...然后我测试了这个命令 root@ns1 [~]# youtube-dl www.youtube.com/watch?v=62h6Wr7heXk,但是出现了以下错误信息:[youtube] Setting language [youtube] 62h6Wr7heXk: Downloading video info webpage [youtube] 62h6Wr7heXk: Extracting video information ERROR: format not available for video - Abdula
不,不是这样的。我不明白为什么你不能像20分钟前那样输入相同的命令。 - mario
当我使用sudo时出现错误...因此我使用sh,但我认为CentOS没有新的软件包错误。 - Abdula
好吧,那就继续使用 sh 而不是 sudo(它是标准的 Linux 命令,在 CentOS 下也可以工作)。我的免费支持到此为止 - 因为你只是装傻,提出要求,甚至还没有礼貌地接受答案。 - mario
显示剩余8条评论

0
<?php
 // The YouTube ID
 $key = "Ct5KJKBI9kc";
 // Get all info for video
 $output = file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$key);
 // Parse data to eg.(&id=var)
 parse_str($output);
 // Get Quality map of video an set array
if(isset($url_encoded_fmt_stream_map)) {
 $my_formats_array = explode(',',$url_encoded_fmt_stream_map);
} 
 // Set Array & Vars
 $avail_formats[] = '';
 $i = 0;
 // Break up array to create download links to quality
 foreach($my_formats_array as $format) {
 parse_str($format);
echo "<a download='". $title .".mp4' href='".$avail_formats[$i]['url'] = urldecode($url) . '&signature=' . $sig."'>". $title .".mp4</a> Quality - ".$quality."<br>"; $i++; } ?>

只需更改 $key 值为您的 YouTube 视频 ID 并运行即可。 - GHnubST
关于在此代码中使用parse_str,php手册表示:警告:不建议在没有第二个参数的情况下使用此函数。在函数作用域中动态设置变量会遇到与register_globals完全相同的问题。 - roetnig
2023年:无法找到此www.youtube.com页面。 - luky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接