2017-05-09 159 views
1

我正在使用MediaElement播放視頻,並且某些時候它會失敗,沒有任何異常。只有黑色窗口出現,並且每次都調用Play()(或暫停()然後播放())失敗。C#MediaElement有時無法播放視頻

我已經ScrubbingEnabled設置爲True,這樣我就可以顯示視頻的第一幀到用戶

代碼: -

<MediaElement x:Name="VideoPlayer" LoadedBehavior="Manual" MediaOpened="VideoPlayer_MediaOpened" MediaEnded="VideoPlayer_MediaEnded" 
MediaFailed="VideoPlayer_MediaFailed" UnloadedBehavior="Manual" Stretch="Uniform" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
SizeChanged="VideoPlayer_SizeChanged" SourceUpdated="VideoPlayer_SourceUpdated" ></MediaElement> 

而且重啓後的exe相同的視頻完美播放。

我在做任何錯誤的事情或其.Net問題?

+0

請更精確...什麼是「失敗」的意思是,任何調用之前爲「失敗」的註冊事件的? – grek40

+0

只是黑色的窗口來了,每次都會調用Play()(或Pause(),然後Play())失敗。 did'nt get any event –

+0

「Play()失敗」是什麼意思?函數是否返回並且程序是否繼續或發生了什麼? – grek40

回答

1

MediaElement使用EVR,而EVR則使用Direct3D。 EVR是一種有限的資源,每個MediaElement使用一個實例,並且一段時間內回放達到極限。不幸的是,這個問題在API內部被壓制,並且沒有合理的錯誤報告發生。

您可以使用此答案中引用的工具估算播放實例的數量:使用多個實例VMR 9(此處也有EVR選項)的黑色視頻。

https://stackoverflow.com/a/23393963/5096993