ビデオファイルをチャンクでダウンロードするビデオプレーヤーがあります。 1MBのチャンクがダウンロードされた後、MediaElementにソースを与えて再生させるイベントが呼び出されます。ビデオが再生されている間、残りの1MBのチャンクは、ファイルが完成するまでダウンロードされます。
1MBのビデオしかダウンロードされていない場合、の再生時間は17秒になります(これは後で入力されます)。
ファイルが完全にダウンロードされると、ビデオの位置を変更したり、探したりする権限がユーザに与えられます。ユーザーが17秒以下の位置にシークすると、MediaElementはその位置を変更して再生を続けますが、17秒を超える位置に移動しようとすると、ビデオがフリーズします。
これは、MediaElementが1MBのビデオだけをバッファしているため、その時間枠でのみ検索しますが、意味を持ちません。なぜなら、中断することなく再生すると、ビデオ全体に問題はありません。誰かが何が起こっているか教えてもらえますか?
コード:位置の変更後にMediaElementが再生されない
private void downloadchunks()
for (int i = 1; i <= 20; i++)
{
WriteStream = new System.IO.FileStream(DownloadLocation, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);
//request and receive a response of 1MB of a file
rpstream = response.GetResponseStream();
byte[] buffer;
using (var SReader = new MemoryStream())
{
rpstream.CopyTo(SReader);
buffer =SReader.ToArray();
WriteStream.Seek(WritePos,SeekOrigin.Begin);
WriteStream.Write(buffer, 0, buffer.Length);
WriteStream.Close();
}
if (i==1)
{
PlayVideo();
}
}
private void PlayVideo()
{
MediaElement.Source = new uri(DownloadLocation);
MediaElement.Play();
}