WPF 播放音频使用的SoundPlayer和MediaPlayer

WPF中,最简单最容易播放音频的方式是使用SoundPlayer类。它是.NET Framework 2.0的一部分,是对Win32 PlaySound API的封装。网络

         它具备如下限制:异步

1)仅支持.wav音频文件;函数

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

3)没法控制声音的音量;spa

下面的代码展现了如何使用SoundPlayer播放声音:视频

    SoundPlayer player = new SoundPlayer("BLOW.WAV");对象

    player.Play();字符串

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

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

         若是你想播放系统声音,但记不住他们的文件名,能够用SystemSounds类中的一些静态属性:Asterisk,Beep,Exclamation,Hand,Question。每一个类型都有本身的Play方法,用来异步播放系统声音。

 

    2、使用WPF专用的MediaPlayer类。它是基于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播放音频文件以下:

    MediaPlayer player = new MediaPlayer ();

    player.Open(new Uri("BLOW.WAV", UriKind.Relative));

    player.Play();

一个MediaPlayer对象一次只能播放一个文件。并且该文件是异步播放的,你也能够调用Close来释放文件。

(提一下,MediaPlayer在XP下须要window media player比较高版本的支持,否则没有声音。SoundPlayer就不须要),这个有点略坑

 

3、使用COM组建的window media player。

看到调用的com组建足足有十几MB大小,果断放弃了,看网上其余人作的,效果应该还不错。

相关文章
相关标签/搜索