WPF - Multimedia

Las aplicaciones WPF admiten video y audio usando MediaElement. Le permite integrar audio y video en una aplicación. La clase MediaElement funciona de manera similar a la clase Image. Simplemente apúntelo a los medios y lo renderiza. La principal diferencia es que será una imagen en movimiento, pero si apuntas al archivo que contiene solo audio y no un video, como un MP3, lo reproducirá sin mostrar nada en la pantalla.

WPF admite todos los tipos de formato de video / audio según la configuración de la máquina. Si un archivo multimedia reproduce un reproductor multimedia, también funcionará en WPF en la misma máquina.

Ejemplo

Tomemos un ejemplo para entender cómo integrar multimedia en su aplicación.

  • Cree un nuevo proyecto de WPF con el nombre WPFMultimedia.

  • El siguiente código XAML crea un elemento multimedia y tres botones y los inicializa con algunas propiedades.

<Window x:Class = "WPFMultimedia.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   xmlns:local = "clr-namespace:WPFMultimedia" 
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <StackPanel HorizontalAlignment = "Center" VerticalAlignment = "Center"> 
         <MediaElement Name = "myMedia" Source = "D:\MicrosoftMVA.mp4" 
            LoadedBehavior = "Manual" Width = "591" Height = "274" /> 
         <StackPanel Orientation = "Horizontal" Margin = "0,10,0,0">
            <Button Content = "Play" Margin = "0,0,10,0" Padding = "5" Click = "mediaPlay" /> 
            <Button Content = "Pause" Margin = "0,0,10,0" Padding = "5" Click = "mediaPause" />
            <Button x:Name = "muteButt" Content = "Mute" Padding = "5" Click = "mediaMute" /> 
         </StackPanel> 
      </StackPanel>
   </Grid> 
	
</Window>

Aquí está la implementación de eventos Click en C # para diferentes botones.

using System; 
using System.Windows; 
 
namespace WPFMultimedia { 

   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
         myMedia.Volume = 100; 
         myMedia.Play(); 
      } 
		
      void mediaPlay(Object sender, EventArgs e) { 
         myMedia.Play(); 
      }  
		
      void mediaPause(Object sender, EventArgs e) { 
         myMedia.Pause();
      } 
		
      void mediaMute(Object sender, EventArgs e) { 
		
         if (myMedia.Volume == 100) { 
            myMedia.Volume = 0; 
            muteButt.Content = "Listen"; 
         } 
         else { 
            myMedia.Volume = 100; 
            muteButt.Content = "Mute"; 
         } 
      } 
   } 
}

Cuando compile y ejecute el código anterior, producirá la siguiente ventana. Puede reproducir el video y controlar su reproducción con los tres botones.

Con los botones puede pausar, silenciar y reproducir el video.

Sintetizador de voz

WPF tiene funciones para convertir texto a voz. Esta API está incluida en el espacio de nombres System.Speech.SpeechSynthesizer la clase transforma el texto en palabras habladas.

Ejemplo

Echemos un vistazo a un ejemplo sencillo.

  • Cree un nuevo proyecto de WPF con el nombre WPFTextToSpeech.

  • Necesitaremos el ensamblaje System.Speech para agregar como referencia para SpeechSynthesizer clase para trabajar.

  • Haga clic derecho en Referencias y seleccione Agregar referencia.

  • Se abrirá el cuadro de diálogo Administrador de referencias. Ahora marque la casilla de verificación System.Speech

  • Haga clic en el botón Aceptar. Puede ver el ensamblado System.Speech en sus Referencias.

  • Ahora arrastre un botón y un cuadro de texto a la ventana de diseño desde la caja de herramientas.

  • El siguiente código XAML crea un botón y un cuadro de texto, y los inicializa con algunas propiedades.

<Window x:Class = "WPFTextToSpeech.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   xmlns:d = "http://schemas.microsoft.com/expression/blend/2008" 
   xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" 
   xmlns:local = "clr-namespace:WPFTextToSpeech"
   mc:Ignorable = "d" Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <Button x:Name = "button" Content = "Speak"  
         HorizontalAlignment = "Left" Margin = "218,176,0,0"  
         VerticalAlignment = "Top" Width = "75"/> 
			
      <TextBox x:Name = "textBox" HorizontalAlignment = "Left"  
         Height = "23" Margin = "60,104,0,0" TextWrapping = "Wrap"  
         VerticalAlignment = "Top" Width = "418"/> 
   </Grid> 
	
</Window>
  • Aquí está la implementación simple en C # que convertirá el texto dentro del cuadro de texto en palabras habladas.

using System.Speech.Synthesis; 
using System.Windows; 
 
namespace WPFTextToSpeech { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
      } 
		
      private void button_Click(object sender, RoutedEventArgs e) { 
		
         if (textBox.Text != "") {
            SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(); 
            speechSynthesizer.Speak(textBox.Text);  
         } 
         else { 
            MessageBox.Show("Write some thing in the textbox!");
         } 
      } 
   }
}

Cuando compile y ejecute el código anterior, producirá la siguiente ventana. Ahora, escriba Hello World dentro del cuadro de texto y haga clic en el botón Hablar.

Producirá el sonido "Hello World". Si no escribe nada en el cuadro de texto, aparecerá el siguiente mensaje.

Le recomendamos que ejecute los ejemplos anteriores.