September 16, 2009
如何下载Youtube 的各种格式视频
网上流传了很多下载youtube的方法或者工具. 其实原理很简单, 只需要通过这样一个URL:
http://www.youtube.com/get_video?fmt=%(fmt)s&video_id=%(video_id)s&t=%(t)s
就可以下载到想要的格式和清晰度.
里面有三个参数, fmt, video_id, t.
对于fmt, 我会在最后列出一个表, 现在youtube所支持的fmt参数.
video_id就是对应于观看youtube video时候的url里的v=xxxxxxxx, 例如 http://www.youtube.com/watch?v=Cb7sPebuKLY&NR=1 video_id就是Cb7sPebuKLY.
t是一个类似cookie的东西, 在page source里可以找到. 在源码里搜索 ‘"t": ‘ 注意包含引号和冒号. 在这个video里的t就是
"vjVQa1PpcFPAdzenFnWSQ2nCQ0NxZ00JfWyv2qTMdTQ%3D".
有了这样几个参数后, 就可以下载想要的video了. 下面是fmt的表
| fmt | 说明 |
| 5 | 低品质 flv |
| 13 | 低品质 3gpp |
| 17 | 低品质 3gpp 略高于13 |
| 18 | 低品质 mp4 320×240?? |
| 22 | 高清品质 mp4 1280 x 720 (画面比例 16:9) |
| 34 | 高品质 flv |
| 35 | 高清品质 864 x 480 ( 9:5 ) |
| 36 | 高品质 3gpp |
到此为止, 随便写个程序实现下载已经很容易了, 若是徒手略微麻烦了点.
这里有一个javascript, 或者叫bookmarklet, 把它拖到bookmark栏里, 在看youtube的时候, 点它就可以下载. 比较方便. 但由于并不是所有的video都有高清的, 所以不能用一个javascript搞定所有的格式, 需要的时候自己修改修改里面的fmt吧.
同时我写了个python程序下载, 点我下载
使用方法是 youtubeDownloader [localfile] [video_id|URL] [fmt]
下载的部分用了wget, windows版本的wget这里下载
另外有一个网站http://www.file2hd.com/ , 你只要把要下载的youtube url给他, 他能帮你整理出可以下载的video. 如果少量video下载也是很不错的选择.
有个疑问: 有些video算是HQ的, 但又没有到fmt=35的品质, 当然更到不了22这种, 对于这种video, 应该用fmt等于几来下载呢? 我尝试了各种fmt都是不行. 一个例子是http://www.youtube.com/watch?v=-E_8YzO6oL0, 谁有兴趣,帮忙尝试一下吧.
Comments(0)