首页 文章

更改位置后MediaElement不播放

提问于
浏览
1

我有一个视频播放器以块的形式下载视频文件 . 下载了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 回答

  • 0

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

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

相关问题