工作完成了,看了一下土豆网,发现有土豆有一个FLV视频加速插件,应该是传说中的P2P加速了,会是怎么做的呢?不如看看再说。

于是下载了一个飞速Tudou,下载的时候顺便看了一下帮助说明,发现有个地方也重要——就是要给浏览器设置代理,装完飞速土豆后,IE浏览器已被设置自动代理脚本,如图所示:


再打开代理脚本看看:

function FindProxyForURL(url, host) {
if (shExpMatch(url, “*/flv/*.flv*”) || shExpMatch(url, “*crossdomain.xml*”) )
return “PROXY 127.0.0.1:9415”;
else return “DIRECT”;
}

应该是只针对土豆网本站的FLV文件做了代理,为什么要做代理呢?莫非会代理到本地?如果是这样的话再看flv的时候应该会把flv下载到本地,不出意外的话应该在飞速土豆的安装文件夹里。打开飞速土豆的安装文件夹,里面果然有个download文件夹,带开一看,里面果然有我刚才看过的flv文件!

这个设计确实很精妙,基于这样的设计,可以开发出一个通用的flv加速代理(实际上飞速土豆本身已经实现了这个功能,只是没有对其他网站的flv进行加速而已)。这样的设计也很通用,是P2P和WEB的完美结合。不过飞速土豆这样做有两个个缺点:

1、占用了用户的磁盘空间,如果看了很多的flv文件,那用户的C盘会爆满的,可以稍微改进一下:例如退出飞速土豆的时候删除看过的flv文件或者限制飞速土豆的磁盘使用空间,超过一定的容量就删除部分flv;

2、太容易让用户拿到了flv文件,可以考虑对flv文件进行加密,这样即使用户拿到了flv也无法使用,能够在很大程度上对版权起到一定的保护作用。不过,貌似服务器端好像没有谁对flv进行加密……

 

6 comments on “基于P2P的FLV”

  1. 这个……还是没看懂,貌似是用到临时文件的概念,先把文件下载到本地硬盘,播放的时候从硬盘读取文件数据流~

  2. 就是这样的,它在本地开一个HTTP服务,然后把请求地址通过代理转发到本地所开的HTTP服务,就可以从本地读取数据了^_^

  3. 貌似看不出对用户有什么好处啊。
    开了自己的http服务是为了给别人下载
    而为了让自己速度提升,只能寄希望于别人开了http服务,万一别人没开,或者开了,但是download里面没有flv,那自己不是白做了贡献?

    tudou牺牲用户的利益,换来自己服务的提升,这确实是个“good idea!”

  4. 呵呵,要从别人那里拿东西,自己当然得贡献,P2P的本来也有这个意思吧,如果从别人那里拿不到你还可以从服务器拿,可能会比浏览器的速度更快一点~
    当然了,这个对于现在很小的FLV流意义可能不是很大,但是如果到以后的高清的FLV的话,肯定会有他的优势~

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据