WPF三种播放音频语音包方法

方法一: SoundPlayer类

SoundPlayer类是.NET Framework 2.0的一部分,它限制有三个:

1仅支持.wav音频文件;

2不支持同时播放多个音频(任何新播放的操作将终止当前正在播放的);

3无法控制声音的音量;

下面展示SoundPlayer播放声音是如何使用的:

SoundPlayer player = new SoundPlayer("next.wav");
player.Play();

同步播放: 
 
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = @"d:\music\happy.mp3";
player.Load();
player.PlaySync();

异步播放: 
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = @"d:\music\happy.mp3";
player.LoadAsync();
player.Play();

循环播放: 
 
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.SoundLocation = @"d:\music\happy.mp3";
player.Load();
player.PlayLooping();

传递给SoundPlayer构造函数的字符串可以是本地的一个文件名,也可以是网络上的文件。调用Play方法将异步播放声音。如果想同步播放声音,可以使用PlaySync方法。当然,想异步循环播放,可以使用PlayLooping方法,直到你调用Stop或重新播放一个新的声音为止。

  需要说明的是,声音文件直到第一次播放时才会被加载。如果声音文件的加载需要很长的时间,例如从网络来,使用同步播放,会导致UI死掉。出于这个原因考虑,SoundPlayer类也定义了Load和LoadAsync方法以便在第一次播放之前提前加载声音文件。

  如果你想播放系统声音,但记不住他们的文件名,可以用SystemSounds类中的一些静态属性:Asterisk,Beep,Exclamation,Hand,Question。每个类型都有自己的Play方法,用来异步播放系统声音。比如:

SystemSounds.Asterisk.Play();

PS:此方法在Winform也可以使用,只需using System.Media;

方法二: MediaPlayer类

MediaPlayer类是.NET Framework 3.0新增的

基于Windows Media Player构建起来的,因此支持Windows Media Player能播放的格式。

  MediaPlayer具有以下特性

  1可以同时播放多个声音(创建多个MediaPlayer对象);

  2可以调整音量(Volume属性);

  3可以使用Play,Pause,Stop等方法进行控制;

  4可以设置IsMuted属性为True来实现静音;

  5可以用Balance属性来调整左右扬声器的平衡;

  6可以通过SpeedRatio属性来控制音频播放的速度;

  7可以通过NaturalDuration属性得到音频的长度,通过Position属性得到当前播放进度;

  8可以通过Position属性进行Seek;

MediaPlayer player = new MediaPlayer();
player.Open(new Uri("薛之谦 - 演员.mp3", UriKind.Relative));
player.Play();

但是要注意: MediaPlayer player = new MediaPlayer();不能在事件处理中,如果将这三行代码放在一个按钮Click事件中,播放几秒后直接被GC干掉,将这句移到事件外即可解决。

MediaPlayer player = new MediaPlayer();
private void Button_Click(object sender, RoutedEventArgs e)
{
player.Open(new Uri("薛之谦 - 演员.mp3", UriKind.Relative));
player.Play();
}

PS:此方法在Winform也可以使用,在引用中添加PresentationCore并using System.Windows.Media即可。

Winform中调用COM组件的步骤

在工具箱上点右键,选择“选择项目(Choose Items)”,切到COM页,找到 Windows Media Player,勾选并点击确定。

在工具箱上,把刚才加入的MediaPlayer控件,拖放到Winform上

axWindowsMediaPlayer1.URL = "文件路径,支持网络路径";
axWindowsMediaPlayer1.Ctlcontrols.play();

其他的操作可以查看axWindowsMediaPlayer1.Ctlcontrols。

方法三:WPF特有的MediaElement元素

关于这个方法我不再多说,园子里已经有大神写了《WPF 4 媒体播放器(MediaElement)》

  在WPF 中可以使用MediaElement为应用程序添加媒体播放控件,以完成播放音频、视频功能。由于MediaElement 属于UIElement,所以它同时也支持鼠标及键盘的操作。

  XAML

<MediaElement Source="bgm.mp3" Margin="0,0,0,64" Name="mediaElement1" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="Fill" MediaOpened="mediaElement1_MediaOpened" Visibility="Collapsed" />

  CS

mediaElement1.Play();

总结:

方法一:适用于播放简短的音效,特别是调用系统音效超方便。

方法二:如果做Winform的话建议用这个,已经提供了一个播放器的基本功能。

方法三:WPF限定的方法,最便捷省力且可以直接用XAML修改属性,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值