我正在尝试制作的 youtube 缓存有问题(我的互联网连接非常慢)。它通过检测是否请求视频播放页面并将响应保存到磁盘来工作。它适用于 Lightspark 和 FireFox 上的 html5 播放器,但是当我在 Google Chrome 上尝试它时,我在 RespCacheCallback 中遇到写入失败。
我在这里有来源,因为发布问题的时间太长了。
我在搜索缓存时忘记将范围添加到程序中创建的 ID,这意味着程序会在请求一小部分时尝试发送整个视频,这会使播放器关闭连接。通过将此方法添加到 MainClass 已解决此问题
static bool TryGetRange (string url, out string range)
{
int index = url.IndexOf ("&range=");
if (index == -1) {
range = null;
return false;
}
index += 7;
int len = url.IndexOf ('&',index) - index;
range = url.Substring (index,len);
return true;
}
此方法检查range
参数是否存在于 url 中,然后获取它的值。然后在之前添加此代码if(File.Exists (requestData.Signature + "_done"))
string range;
if(TryGetRange (requestString, out range))
{
requestData.Signature += range;
}
如果检测到范围参数,这会将范围添加到签名中