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大小,果斷放棄了,看網上其餘人作的,效果應該還不錯。