[WPF - NET 7.0] - El control MediaElement

Descripción general:

Las clases MediaElement y MediaPlayer se utilizan para presentar contenido de audio o vídeo. Estas clases se pueden controlar interactívamente o mediante un reloj. Estas clases pueden utilizar el control Microsoft Windows Media Player 10 para la reproducción multimedia.

Nota importante:

El texto que sigue a continuación me ha parecido tan claro y bueno que lo he copiado descaradamente de la siguiente dirección . La página pertenece al sitio Tutor de programación

[Start texto copiado]


↑↑↑

Reproducir video y audio en .net

Las clases MediaElement y MediaPlayer se utilizan para presentar contenido de audio o vídeo. Estas clases se pueden controlar interactivamente o mediante un reloj. Estas clases pueden utilizar el control Microsoft Windows Media Player 10 para la reproducción multimedia. La clase que se utiliza depende del escenario.

  • MediaElement es una clase UIElement compatible con Diseño que se puede utilizar como contenido de muchos controles. También se puede utilizar en Lenguaje XAML, así como en el código.
  • MediaPlayer , por otro lado, está diseñado para los objetos Drawing y carece de compatibilidad de diseño. Los objetos multimedia cargados mediante MediaPlayer únicamente se pueden presentar utilizando VideoDrawing o interactuando directamente con DrawingContext. MediaPlayer no se puede utilizar en XAML.

Para entender la reproducción multimedia en Windows Presentation Foundation (WPF), es preciso entender los distintos modos en que se pueden reproducir los objetos multimedia. MediaElement y MediaPlayer se pueden utilizar en dos modos multimedia diferentes, el modo independiente y el modo de reloj . El modo multimedia se determina mediante la propiedad Clock. Cuando Clock es null, el objeto multimedia está en modo independiente. Cuando Clock NO es null, el objeto multimedia está en modo de reloj. De manera predeterminada, los objetos multimedia están en modo independiente.


↑↑↑

Modo independiente

En el modo independiente, el contenido multimedia controla la reproducción multimedia. El modo independiente habilita las opciones siguientes:

  • Se puede especificar el Uri del objeto multimedia directamente.
  • Se puede controlar directamente la reproducción multimedia.
  • Se pueden modificar las propiedades Position y SpeedRatio del objeto multimedia.
  • El objeto multimedia se carga estableciendo la propiedad Source del objeto MediaElement o bien llamando al método Open del objeto MediaPlayer.
  • Para controlar la reproducción multimedia en modo independiente, se pueden utilizar los métodos de control del objeto multimedia. Los métodos de control disponibles son Play, Pause, Close y Stop. Para MediaElement, el control interactivo mediante estos métodos únicamente está disponible cuando LoadedBehavior está establecido en Manual. Estos métodos no están disponibles cuando el objeto multimedia está en modo de reloj.

↑↑↑

Modo de reloj

En el modo de reloj, MediaTimeline controla la reproducción multimedia. El modo de reloj tiene las siguientes características:

  • El Uri del objeto multimedia se establece indirectamente a través de MediaTimeline.
  • La reproducción multimedia se puede controlar mediante el reloj. No se pueden utilizar los métodos de control del objeto multimedia.
  • El objeto multimedia se carga estableciendo la propiedad Source de un objeto MediaTimeline, creando el reloj a partir de la escala de tiempo y asignando el reloj al objeto multimedia. El objeto multimedia también se carga de esta manera cuando el destino de un objeto MediaTimeline de Storyboard es MediaElement.
  • Para controlar la reproducción multimedia en modo de reloj, se deben utilizar los métodos de control de ClockController. ClockController se obtiene de la propiedad ClockController de MediaClock. Si intenta utilizar los métodos de control de un objeto MediaElement o MediaPlayer mientras está en modo de reloj, se producirá una excepción InvalidOperationException.

/Eof texto (hábilmente copiado)


↑↑↑

Mi Experiencia

MI experiencia personal esta limitada ( de momento) al modo independiente. Primero busque la información en MSDN y copie un código XAML que en teoría mostraba un video. Funcionar funcionaba, pero en mi código, el video debía repetirse en bucle hasta que se cerrase la ventana. ¿Cual fue el problema? Pues que había veces que funcionaba bien, y otras el video se atascaba.

Después de dos o tres repeticiones y además sin ninguna razón que yo pudiera determinar.

Como no conseguí hacerlo funcionar, decidí manejarlo por código, y he copiado y adaptado el código (original) MSDN que figura en la pagina: Cómo: Controlar un MediaElement (Reproducir, Pausar, Detener, Volumen y Velocidad) , que si que ha funcionado a la primera

La única pega ha sido el nombre de fichero, que he para cargarlo dentro de un proyecto, he tenido que montar el nombre de fichero y después pasárselo a la propiedad source


Nota importante

La documentación de MSDN en [MediaElement Clase] dice que: Para distribuir elementos multimedia con la aplicación (por ejemplo: un video), no puede declarar el archivo multimedia como recurso del proyecto. Hay que selecciona el Video e ir a la ventana propiedades, para modificar las propriedades del elemento multimedia de la siguiente forma:


↑↑↑

Enlaces de descarga

Enlace de descarga Código Md5 (para los paranoicos)
[Descargas] Código XAML [Código Md5 ]
[Descargas] Código VB.Net [Código Md5 ]
[Descargas] Un video pequeño para hacer pruebas [Código Md5]
[Descargas] Fichero ZIP, con los tres ficheros anteriores [Código Md5]