【问题标题】:Can not Download video from youtube无法从 youtube 下载视频
【发布时间】:2012-09-07 15:12:05
【问题描述】:

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

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

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

【问题讨论】:

标签: android youtube download


【解决方案1】:

这是返回视频网址的代码:

全部归功于 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))

【讨论】:

  • 不幸的是,这种方法还不够:在某些情况下,您还应该解密签名。
【解决方案2】:

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

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

【讨论】:

  • Youtube-dl 仍然有效,所以应该可以。如果您遇到任何事情,请在这里分享
【解决方案3】:

我遇到了同样的问题,据我从其他修复它的人那里了解到,我们需要向视频链接(返回的 mp4 或 3gp 链接)添加签名...我正在调查这并将更新。如果你发现任何东西,我希望你也能这样做。

【讨论】:

  • 如果我能得到一些工作,我当然会更新。如果您找到修复程序,请更新。 Youtube-dl 仍然有效,我目前正在尝试看看你是如何做到的。
猜你喜欢
  • 2011-02-10
  • 2012-12-21
  • 1970-01-01
  • 2010-11-08
  • 2019-11-23
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多