WPF - 多媒体

  • 简述

    WPF 应用程序支持使用媒体元素的视频和音频。它允许您将音频和视频集成到应用程序中。类的工作方式与图像类类似。您只需将其指向媒体,它就会呈现它。主要区别在于它将是一个移动图像,但是如果您将其指向仅包含音频而没有视频(例如MP3)的文件,它将在屏幕上不显示任何内容的情况下播放。
    WPF 支持所有类型的视频/音频格式,具体取决于计算机配置。如果媒体文件播放媒体播放器,则它也将在同一台计算机上的 WPF 中工作。
  • 让我们举个例子来了解如何在应用程序中集成多媒体。
    • 创建一个名为 WPF 多媒体的新 WPF 项目。
    • 下面的 XAML 代码创建一个媒体元素和三个按钮,并使用一些属性初始化它们。
    
    <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 HorizontalMoognment = "Center" VerticalMoognment = "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>
    
    下面是 C# 中针对不同按钮的 Click 事件实现。
    
    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"; 
             } 
          } 
       } 
    }
    
    编译并执行上述代码时,将生成以下窗口。您可以使用三个按钮播放视频并控制其播放。
    多媒体
    使用这些按钮,您可以暂停,静音和播放视频。
  • 语音合成器

    WPF 具有将文本转换为语音的功能。此 API 包含在系统语音命名空间中。语音合成器类将文本转换为口语单词。

    让我们看一个简单的例子。
    • 创建一个名为“WPF文本”的新 WPF 项目。
    • 我们将需要系统语音程序集添加为语音合成器类的参考才能工作。
    • 右键单击“引用”,然后选择“添加引用”。
    WPF 文本到语音转换
    • 将打开“引用管理器”对话框。现在选中“系统语音”复选框
    “引用管理器”对话框
    • 点击 Ok 按钮。您可以在“引用”中看到“系统语音”程序集。
    系统语音
    • 现在,将按钮和文本框从工具箱拖到设计窗口中。
    • 下面的 XAML 代码创建一个按钮和一个文本框,并使用一些属性对其进行初始化。
    
    <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"  
             HorizontalMoognment = "Left" Margin = "218,176,0,0"  
             VerticalMoognment = "Top" Width = "75"/> 
             
          <TextBox x:Name = "textBox" HorizontalMoognment = "Left"  
             Height = "23" Margin = "60,104,0,0" TextWrapping = "Wrap"  
             VerticalMoognment = "Top" Width = "418"/> 
       </Grid> 
       
    </Window> 
    
    • 下面是 C# 中的简单实现,它将文本框中的 Text 转换为口语。
    
    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!");
             } 
          } 
       }
    } 
    
    编译并执行上述代码时,将生成以下窗口。现在,在文本框中键入“你好世界”,然后单击“说话”按钮。
    多媒体输出 1
    它将产生“你好世界”的声音。如果您没有在文本框中键入任何内容,则它将闪烁以下消息。
    多媒体输出 2
    我们建议您执行上述示例。