none
WPF MediaElement CurrentState RRS feed

  • Pregunta

  • Buenas tardes, quiero determinar si el control MediaElement está actualmente en reproducción de un video, algo como un CurrentState (esta propiedad existe en Silverlight) o algo asi. Muchas gracias.
    martes, 3 de mayo de 2011 23:40

Respuestas

  • Hola Gorcifed.

    La verdad, es que no existe de forma tan sencilla como en silverlight, pero existe una forma que otorga mucha flexibilidad, se trata de asignar un reloj y una linea de tiempo.

    Te pongo un codigo de ejemplo:

       // crear una linea de tiempo para el reloj
       MediaTimeline timeline = new MediaTimeline(mediaElement1.Source);
       // crear un reloj para el mediaElement basado en la linea de tiempo
       MediaClock clock = timeline.CreateClock();
       // establecer el rejoj
       mediaElement1.Clock = clock;
    
       // controlando el elemento multimedia
       // Play del video
       mediaElement1.Clock.Controller.Begin();
       // Strop del video
       mediaElement1.Clock.Controller.Stop();
       // obtener el estado actual estado del video (que realmente es del reloj de la linea de tiempo)
       System.Windows.Media.Animation.ClockState state = mediaElement1.Clock.CurrentState;
    

     

    Creo que el codigo es bastante claro, si tienes algun problema comentalo.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    miércoles, 4 de mayo de 2011 7:39

Todas las respuestas

  • Hola Gorcifed.

    La verdad, es que no existe de forma tan sencilla como en silverlight, pero existe una forma que otorga mucha flexibilidad, se trata de asignar un reloj y una linea de tiempo.

    Te pongo un codigo de ejemplo:

       // crear una linea de tiempo para el reloj
       MediaTimeline timeline = new MediaTimeline(mediaElement1.Source);
       // crear un reloj para el mediaElement basado en la linea de tiempo
       MediaClock clock = timeline.CreateClock();
       // establecer el rejoj
       mediaElement1.Clock = clock;
    
       // controlando el elemento multimedia
       // Play del video
       mediaElement1.Clock.Controller.Begin();
       // Strop del video
       mediaElement1.Clock.Controller.Stop();
       // obtener el estado actual estado del video (que realmente es del reloj de la linea de tiempo)
       System.Windows.Media.Animation.ClockState state = mediaElement1.Clock.CurrentState;
    

     

    Creo que el codigo es bastante claro, si tienes algun problema comentalo.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    miércoles, 4 de mayo de 2011 7:39
  • Hola David, gracias por tu pronta respuesta. Voy a verificar el código, pero tengo una duda, resulta que en mi aplicación el video se para sin ninguna explicación al ejecutarse otro proceso de la misma interfaz aún cuando este proceso está en otro hilo; a raíz de este inconveniente se me ocurrió que si sabia el estado del MediaElement podría de nuevo darle Play(). Mi pregunta es si este objeto Clock seguirá ejecutándose mientras la reproducción se pare, porque de ser así no me serviría.

    miércoles, 4 de mayo de 2011 15:48
  • Hola Gorcifed.

    No se me ocurre nada por lo que se te pueda parar a simple vista, pero el MediaElement como indica en la MSDN de microsoft, puede funcionar de 2 modos, en modo independiente o en modo de reloj, si tu le estableces el reloj, el MediaElement es controlado por el reloj y si mientras no se pare el reloj, el mediaelement tiene que seguir funcionando (en condiciones normales).

    de todas formas dejo la pagina de microsoft para mas informacion tecnica:

    http://msdn.microsoft.com/en-us/library/aa970915.aspx

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    miércoles, 4 de mayo de 2011 18:24