如何使用WPF的MediaElement平滑播放视频序列?
问题描述:
我想在运行时撰写的视频序列,使结果看起来像一个,流畅的视频。如何使用WPF的MediaElement平滑播放视频序列?
此片段展示了我目前的做法:
void mediaElement_MediaEnded(object sender, RoutedEventArgs e)
{
if (_currentVideoIndex == this.videos.Length)
this._currentVideoIndex = 0;
PlayNext();
}
void PlayNext()
{
mediaElement.Source = new Uri(videos[_currentVideoIndex++]);
mediaElement.Play();
}
在影片播放罚款,但玩家去空白一半左右每个视频之间的第二的。
我不是绑在这一点上特定的平台,WPF/MediaElement的就是在那里我开始。
答
你可以尝试缓冲下一个视频。因此,您总是会加载两个视频 - 这样,一旦完成,您可以立即切换到下一个已加载的MediaElement。
这是相同的概念GDI +闪烁的问题,当你不断地吸取和刷新 - 该解决方案是双缓冲的形式。没有双缓冲,GDI +清除表单(这是用户看到的瞬间闪烁)并绘制。使用双缓冲,GDI +将绘制到临时屏幕,然后立即在表单上更新它,从而消除闪烁。
你的方案要求类似的解决方案。在列表视频中,始终保持两个加载(您可以在加载第一个后异步加载第二个以减少延迟时间)。这样,在第一个视频播放完毕后,您可以立即显示已经被覆盖的第二个MediaElement。
+1
的代码段将使这一个更好的答案。 – 2012-02-25 01:32:45
您可以尝试缓冲下一个视频。因此,您总是会加载两个视频 - 这样,一旦完成,您可以立即切换到下一个已加载的MediaElement。当您不断绘制和刷新时,它与GDI +闪烁问题的概念相同。 – Jason 2012-02-25 00:35:44
+1很好的回答,你应该把它写的答案,不仅评论... – 2012-02-25 00:46:24