今天看到 infoq 网站上一个讲 Go 语言的视频,速度太卡了。我家里光纤宽带也没法正常浏览,所以需要研究下如何下载了。
用 FireBug 看了下源代码,抓到其中 flash 播放控件的一个参数里有视频链接如下:
<param name="flashvars" value="server=rtmpe://video.infoq.com/cfx/st/&streams=mp4:presentations-ch/infoq-qcon-20120418-xushiwei.mp4,0">
hmm..., rtmpe, 之前没有了解过这个协议嘛。搜了下,原来是一种实时的视频播放协议。类似的协议有两种,rtmp 是不加密的,rtmpe 多个 e 的后缀表示是加密协议。这个协议发明的目的之一就是不让人轻易下载,号称播放时不生成临时文件,在内存里也不缓存,下载完无痕迹,等等。
网上下载一个叫 rtmpdump 的工具,可以下载此类视频。但以上参数中提供的 rtmpe 视频的链接其实并不是直接的访问地址,还需要做一些简单的转换,最终猜测实际地址如下:
rtmpe://video.infoq.com/cfx/st/presentations-ch/infoq-qcon-20120418-xushiwei.mp4
然后用下列命令就可以把视频下载为本地一个 flv 文件:
rtmpdump –r "rtmpe://video.infoq.com/cfx/st/presentations-ch/infoq-qcon-20120418-xushiwei.mp4" –o "c:\golang.flv"