2011年4月7日木曜日

探究视频加速器的原理(资料)

探究视频加速器的原理(资料)

1.视频加速器的原理
视频加速器能够提供对HTTP浏览器从HTTP服务器获取.flv,.mp4等类型的流媒 体内
容进行实时加速,其下载原理类似于典型的BT下载,由Tracker服务器+客户端构
成,当 一个HTTP Agent向HTTP服务器请求.flv,.mp4类型的数据 时,视频加速器能
够定位该资源,并向Tracker服 务器发送节点请求,实际的下载分为两部分,这两
部分同时进行:一部分为从HTTP服务器的下载;一部分走P2P网络,从拥有此资源
的其它 节点处下载。其实我们完全可以将成熟的P2SP的 下载技术和框架应用于此。
那么剩下一个问题:视频加速器如何截获HTTP浏览器的资源请求并将从P2P网络接
受到的数据又回传给 它呢?我的第一个念头就是:BHO.经 过分析,我发现他们使
用了自动代理配置技术Proxy Auto-Config,简称PAC, 结合注册表和WinInet库的使
用,很好的 解决了上面的问题。通过动态修改注册表:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Connections]

DefaultConnectionSettings

SavedLegacySettings

[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Connections]

DefaultConnectionSettings

SavedLegacySettings

将 代理服务器设置为:

Use automatic configuration script

Adress=http://localhost:9000/application.pac.

通 过WinInet API:InternetSetOption
OPTION=INTERNET_OPTION_SETTINGS_CHANGED来 实现代理服务器的实时改动。
这样我们通过PAC文 件中FindProxyForURL的 实现,就可以实现截获HTTP浏 览器
的资源请求;同时,由于我们采用的是HTTP Proxy技术来实现于HTTP浏览器的交
互,这样将P2P网络中接收到的数据经过HTTP协议封装再传给HTTP浏览器即可。

2.一个视频加速器的PAC文件
以下是一个某视频加速器的PAC文件,主要实现了对本机地址和LAN地址进行直通,
对URL开头为http://并且内容为.flv和.mp4的文件获取进行代理加 速。

function FindProxyForURL(url,host){

if(host == "localhost" || host == "127.0.0.1")

{

return "DIRECT";

}

var private_re = /^http:\/\/((lisbon)|(0\.0\.0\.0)|(127\.\d+\.\d+\.\d+)|(10

\.\d+\.\d+\.\d+)|(172\.(1[6789]|2[0-9]|3[01])\.\d+\.\d+)|(169\.254\.\d+\.\d+)|(192\.168

\.\d+\.\d+)|(22[3-9]\.\d+\.\d+\.\d+)|(2[3-5][0-9]\.\d+\.\d+\.\d+))+/ig

if(private_re.test(url) || url.substring(0,7) != "http://")

{

return "DIRECT";

}

var pattern = /[^\/&]+(\.flv|\.mp4)+(\?|$)/ig;

if(pattern.test(url))

{

return "PROXY localhost:9000";

}

else

{

return "DIRECT";

}

0 件のコメント:

コメントを投稿