我有一个从youtube下载mp4文件的脚本。它的作用是生成http://youtube.com/get_video?video_id= * VIDEO_ID *&& t = * THE_TOKEN * =& fmt = 18& asv = 2形式的链接,但它不再起作用(今天注意到它) 。你觉得怎么样?
答案 0 :(得分:13)
请尝试解析fmt_url_map(format-url map),而不是尝试使用get_video来获取视频。
您应该能够在找到令牌的同一位置找到fmt_url_map(例如在YouTube Flash视频播放器的flashvars中或某处的YouTube页面内)。如果找不到,请向http://www.youtube.com/get_video_info?video_id= VIDEO_ID 发送请求,您应该得到一个非常长的结果,格式为name=value&name=value&...
查找“fmt_url_map”结果(在结果中搜索以“& fmt_url_map =”开头并以“&”结尾的字符串)。
获得此值后(您可能需要对其进行url-decode),它会像(没有换行符):
22|http://blah.youtube.com/videoplayback?blah,
35|http://blah.youtube.com/videoplayback?blah,
...
其中每个以逗号分隔的条目以fmt值(示例中为22或35)开头,后跟一个竖线字符,然后是一个URL,您可以使用该URL下载该格式的视频。 (此URL是特定于客户端的,因此,由于YouTube检查IP,某个客户端的URL很可能无法与其他客户端一起使用。此外,URL会在一段时间后过期。)
有关不同fmt值的列表,请参阅:http://en.wikipedia.org/wiki/YouTube#Quality_and_formats并显示“YouTube媒体编码选项的Comarison”。注意:并非所有格式都适用于所有视频。
已弃用:将不再有效!
答案 1 :(得分:2)
如果您想下载到服务器,可以使用仍然有效的youtube-dl。
答案 2 :(得分:0)
好像他们已经删除了fmt选项。请参阅http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs。
答案 3 :(得分:0)
我已经创建了一个node.js服务器,可以直接将YouTube视频流式传输到客户端,并且可以正常工作。有关详细信息,请参阅https://github.com/licson0729/node-YouTubeStreamer。