2012-03-08 15 views
5

Intento reproducir jpg (en loop), después de hacer clic en mp4 se debe reproducir después de finalizar, ese jpg debería volver a reproducirse. No sé por qué, pero después de jugar en axWindowsMediaPlayer1_PlayStateChange vido play y luego me detengo. Ayuda.Reproducción de dos videos con 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; 
     } 


    } 
} 

Respuesta

7

Ojalá alguien hubiera respondido a esta pregunta la hora en que fue publicada. Me llevó mucho tiempo descubrir por qué no podía comenzar un nuevo video configurando la propiedad URL. Finalmente encontré la respuesta a esta cuestión aquí:

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

El problema es con el establecimiento de la propiedad URL desde dentro del controlador de eventos axWindowsMediaPlayer1_PlayStateChange(). De acuerdo con el documento msdn anterior:

"No invoque este método desde el código del controlador de eventos. Llamar a la URL desde un controlador de eventos puede producir resultados inesperados".

Por lo tanto, la propiedad URL debe establecerse fuera del controlador par. También probé Dispatcher.Invoke() e incluso comencé un nuevo hilo desde el controlador de eventos para establecer la propiedad URL; pero eso tampoco ayudó. ¡Realmente tiene que venir desde fuera del controlador de eventos!

+0

Gracias por poner aquí! Esa fue información útil. +1 a la pregunta, así como a la respuesta. – fayyazkl

Cuestiones relacionadas