我有一个视频播放器以块的形式下载视频文件 . 下载了1MB的大块后,会调用一个事件,为MediaElement提供源代码,并使其播放 . 在播放视频时,下载1MB块的其余部分直到文件完成 .
如果只下载了1MB的视频,那么 playback time is equal to 17 seconds (这将在稍后介绍) .
当文件被完全下载时,允许用户改变视频的位置或寻找它 . 如果用户寻找低于或等于17秒的位置,MediaElement将改变其位置并继续播放,但是如果用户寻找大于17s的位置,则视频冻结 .
这可能是因为MediaElement只缓冲了1MB的视频,所以它有意义,因为如果我让它不间断地播放,它将播放整个视频没有任何问题 . 谁能告诉我发生了什么事?
码:
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();
}
1 回答
我已经明白了 . 只需在将其分配给MediaElement之前创建一个dummmy文件,然后开始下载 .