如何使用WPF的MediaElement顺畅播放一系列视频?

时间:2012-02-25 00:33:13

标签: c# video 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就在我正在开始的地方。

1 个答案:

答案 0 :(得分:3)

您可以尝试缓冲下一个视频。因此,您总是会加载两个视频 - 这样,当一个完成后,您可以立即切换到下一个已加载的MediaElement。

当您不断绘制和刷新时,它与GDI +闪烁问题的概念相同 - 解决方案是双缓冲表单。如果没有双缓冲,GDI +将清除表单(这是用户看到的瞬间闪烁)并绘制。通过双缓冲,GDI +绘制到临时屏幕,然后立即在表单上更新它,从而消除闪烁。

您的方案需要类似的解决方案。在列表视频中,始终保持两个加载(您可以在加载第一个之后异步加载第二个以减少延迟时间)。这样,在完成第一个视频播放后,您可以立即显示已经加盖的第二个MediaElement。