2012-03-08 81 views
5

我嘗試播放jpg(在循環中),點擊後應該在播放完mp4後,該jpg應該再次播放。我不知道爲什麼,但在我玩axWindowsMediaPlayer1_PlayStateChange vido後,然後停止。幫幫我。使用axWindowsMediaPlayer播放兩個視頻

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace Video 
{ 
    public partial class Form1 : Form 
    { 
     bool clicked = false; 
     public Form1() 
     { 
      InitializeComponent(); 
      axWindowsMediaPlayer1.URL = "wait2.JPG"; 

     } 



     private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
     { 
      if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded & clicked== true) 
      { 
       clicked = false; 
       axWindowsMediaPlayer1.settings.setMode("Loop", true); 
       axWindowsMediaPlayer1.URL = "wait2.JPG"; 
       axWindowsMediaPlayer1.Ctlcontrols.play(); 

      } 

     } 

     private void axWindowsMediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e) 
     { 
      axWindowsMediaPlayer1.settings.setMode("Loop", false); 
      axWindowsMediaPlayer1.URL = "video.MP4"; 
      axWindowsMediaPlayer1.Ctlcontrols.play(); 
      clicked = true; 
     } 


    } 
} 

回答

7

我希望有人回答了這個問題的時間。我花了很多時間來弄清楚爲什麼我無法通過設置URL屬性來創建新視頻。我終於找到了答案,在這裏這個問題:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd562470%28v=vs.85%29.aspx

的問題是從axWindowsMediaPlayer1_PlayStateChange()事件處理程序中設置的URL屬性。根據上面的msdn文檔:

「不要從事件處理程序代碼調用此方法。從事件處理程序調用URL可能會產生意外的結果。」

因此,URL屬性必須設置在偶處理程序之外。我也嘗試過Dispatcher.Invoke(),甚至從事件處理程序中啓動一個新線程來設置URL屬性;但這也沒有幫助。它真的必須來自事件處理程序之外!

+0

謝謝你把它放在這裏!這是有用的信息。 +1問題以及答案。 – fayyazkl 2013-08-14 10:51:56