1

欢迎,

我正在寻找允许我以最高格式下载 youtube 视频的 youtube api。

几年前,这项工作更简单,因为 url 包含有关质量的信息,例如“fmt=22”或“fmt=6”,现在我们生活在未来,并且这些信息嵌入在播放器中。

现在它更复杂了......谷歌使用缓存服务器并且 get_video 不起作用。

例如: http ://www.youtube.com/watch?v=XIz-MmKeoCs (这只是高清的例子,不要评论音乐)

现在我正在使用旧的 PHPtube 类(2007 年)。phpclasses.org/browse/package/3966.html 它只允许通过flv下载最低质量的文件。

我的问题是,任何人都有允许以最高可能下载的课程吗?

我给出视频 ID -> XIz-MmKeoCs 它应该检查可以下载的质量。现在我不知道如何得到它...

并给出下载链接。(当然我知道 IP 使用的安全性,并希望使用 file_contents 在我的服务器上下载文件)但我只是在获取该下载链接时遇到了麻烦。

我会很乐意提供任何帮助...

4

2 回答 2

2

使用这篇文章作为指导:youtube get_video not working

使用该示例中的 $ytarr['fmt_url_map'],您可以将其explode() 转换为各种可用格式:

$fmt_array = array('5','34','35');    
$fmt_available = explode(',', $ytarr['fmt_stream_map']);
foreach ($fmt_array as $val) {
    foreach ($fmt_available as $fmtstr) {
        if (strpos($fmtstr,"$val|") !== false){
            $format = explode('|', $fmtstr);
            break 2;
        }
    }
}
echo $format['1'];

$fmt_array 将按优先级顺序保存您想要的所有格式。在本例中,它将首先打印格式 5 的直接链接,如果 5 不可用,它将打印 34,依此类推。您显然希望将该数组更改为首先列出最高格式。

于 2011-03-01T10:46:43.520 回答
0

如果你拉一个视频页面,解析它并寻找 &fmt_url_map= 后面的东西是格式 id => 下载链接的映射。你必须对它做一点解析,但看看它并没有那么复杂。

问题是,如果你在你的机器上开发它,它会工作,但如果你想让它上线,它就不会工作,因为下载 url 有某种签名,只适用于拉视频页面的机器,在这种情况下,它将与您的本地计算机不匹配。

于 2010-04-11T20:52:15.650 回答