更改位置后MediaElement无法播放

时间:2016-08-22 05:57:45

标签: c# wpf mediaelement

我有一个以块的形式下载视频文件的视频播放器。在下载了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();
}

1 个答案:

答案 0 :(得分:0)

我已经弄明白了。只需在将文件分配给MediaElement之前创建一个dummmy文件,然后开始下载。

File.WriteAllBytes(location, new byte[filesize]);