2012-02-25 129 views
1

我想在運行時撰寫的視頻序列,使結果看起來像一個,流暢的視頻如何使用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的就是在那裏我開始。

+1

您可以嘗試緩衝下一個視頻。因此,您總是會加載兩個視頻 - 這樣,一旦完成,您可以立即切換到下一個已加載的MediaElement。當您不斷繪製和刷新時,它與GDI +閃爍問題的概念相同。 – Jason 2012-02-25 00:35:44

+0

+1很好的回答,你應該把它寫的答案,不僅評論... – 2012-02-25 00:46:24

回答

3

你可以嘗試緩衝下一個視頻。因此,您總是會加載兩個視頻 - 這樣,一旦完成,您可以立即切換到下一個已加載的MediaElement。

這是相同的概念GDI +閃爍的問題,當你不斷地吸取和刷新 - 該解決方案是雙緩衝的形式。沒有雙緩衝,GDI +清除表單(這是用戶看到的瞬間閃爍)並繪製。使用雙緩衝,GDI +將繪製到臨時屏幕,然後立即在表單上更新它,從而消除閃爍。

你的方案要求類似的解決方案。在列表視頻中,始終保持兩個加載(您可以在加載第一個後異步加載第二個以減少延遲時間)。這樣,在第一個視頻播放完畢後,您可以立即顯示已經被覆蓋的第二個MediaElement。

+1

的代碼段將使這一個更好的答案。 – 2012-02-25 01:32:45