无法从youtube下载视频

时间:2012-09-14 12:40:52

标签: android youtube download

我正在使用http://www.youtube.com/get_video_info?video_id= * VIDEO_ID *并且根据我得到的数据我正在解析url_encoded_fmt_stream_map并且我得到了像

这样的网址
http://blah.youtube.com/videoplayback?blah

之前我可以使用此网址下载视频,但现在我无法再下载视频了。任何人都知道为什么?

3 个答案:

答案 0 :(得分:5)

以下是返回视频网址的代码:

youtube-dl的所有信用我只复制了他们提取网址所需的部分脚本

video_id = "yourvideoid"
for el_type in ['&el=embedded', '&el=detailpage', '&el=vevo', '']:
    video_info_url = ('http://www.youtube.com/get_video_info?&video_id=%s%s&   ps=default&eurl=&gl=US&hl=en'
                     % (video_id, el_type))
    request = urllib2.Request(video_info_url)
    try:
        video_info_webpage = urllib2.urlopen(request).read()
        video_info = parse_qs(video_info_webpage)
        if 'token' in video_info:
            break
    except (urllib2.URLError, httplib.HTTPException, socket.error), err:
        print('ERROR: unable to download video info webpage: %s' % str(err))
video_url_list = video_info['url_encoded_fmt_stream_map'][0]
url_data_strs = video_info['url_encoded_fmt_stream_map'][0].split(',')
url_data = [parse_qs(uds) for uds in url_data_strs]
url_data = filter(lambda ud: 'itag' in ud and 'url' in ud, url_data)
url_map = dict((ud['itag'][0], ud['url'][0] + '&signature=' + ud['sig'][0]) for ud in  url_data)
print(str(url_map))

答案 1 :(得分:1)

不知道为什么,但似乎是affecting all downloader extensions,所以几乎可以肯定是在YouTube方面。我认为它与知识产权有关。 YouTube“有意”成为流媒体网站,而不是视频文件存储库。

Shutaro at addons.mozilla.com发现了一种解决方法,需要强制YouTube恢复投放旧的.webm格式。

答案 2 :(得分:0)

我遇到了同样的问题,而且我从其他修复它的人那里得知我们需要为视频链接添加签名(返回的mp4或3gp链接)...我正在研究这个并将更新。如果您发现任何事情,我希望您也能这样做。