2012-04-09 148 views
4

我需要在我的應用程序中同時播放兩個視頻(每個視頻長度均爲15秒)。隨着時間的推移,我需要改變一個視頻的不透明度(在DoubleAnimation中),讓它出現在另一個視頻之上。播放兩個視頻需要同步目的。同時播放兩個視頻

我試圖使用MediaElements播放視頻,但我無法讓它們同時播放視頻。我認爲這是不可能的。我對嗎?我嘗試將我的視頻分成450幀(每秒30幀)並使用ObjectAnimationUsingKeyFrames(例如:http://compiledexperience.com/windows-phone/tutorials/candle),但這種方式使用的內存太多(使用的內存大約爲250 MB,儘管最大使用量必須是90 MB)。

最後我試圖使用DispatcherTimer並在它的Tick程序中更改兩個Images的Source Properties,但它的工作速度足夠慢。

請幫助我,有沒有辦法做到這一點沒有滯後?

+1

不是一個答案,但它不工作的原因是因爲您只能在頁面上使用一個'MediaElement'。如果可能的話,您可以創建一個包含所有動畫和效果的視頻,然後在循環中使用該視頻。 – keyboardP 2012-04-09 13:46:46

+0

我需要讓用戶選擇讓視頻顯示/消失。所以,當一個視頻逐漸變成另一個視頻時,我想創造變形效果的相似性。但是開始這個​​效果的時刻是由用戶定義的(例如點擊事件)。 – Lumen 2012-04-09 20:27:06

+0

也不是一個答案,但只是一個建議......或一個真正的想法,爲什麼你不能使用一組臨時文件的流/提示視頻文件,其中你會計算確切的幀將被「拼接」和將它們渲染爲單獨的「拼接」文件。然後,您播放vid_1part_1,splice_1,vid2part_1,splice_2,vid_1part_2,splice_3,vid_2part_2,splice_4等。 – 2012-04-12 14:32:14

回答

0

另一種辦法是使用CompositionTarget.Rendering可以嘗試 如下所述:http://msdn.microsoft.com/en-us/library/ms748838.aspx

你可能會碰到的問題是,調用之間的時間不能保證,那麼你可能會得到幀運行更快或更慢。

但是Charles Petzold有一篇文章展示瞭如何確定時間流逝的方式,以便您可以選擇正確的幀以在渲染事件發生時顯示。示例代碼應該是有幫助的: http://www.charlespetzold.com/blog/2010/06/CompositionTarget-Rendering-and-RenderEventArgs.html