作成しようとしている 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;
}
これにより、範囲パラメータが検出された場合に署名に範囲が追加されます