我有一个以块的形式下载视频文件的视频播放器。在下载了1MB的块之后,将调用一个事件,为MediaElement提供源代码并使其播放。在播放视频时,下载1MB块的其余部分直到文件完成。
如果只下载了1MB视频,播放时间等于17秒(稍后会出现)。
当文件被完全下载时,允许用户改变视频的位置或寻找它。如果用户寻找低于或等于17秒的位置,MediaElement将改变其位置并继续播放,但是如果用户寻找的位置大于17秒,则视频会冻结。
这可能是因为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();
}
答案 0 :(得分:0)
我已经弄明白了。只需在将文件分配给MediaElement之前创建一个dummmy文件,然后开始下载。
File.WriteAllBytes(location, new byte[filesize]);