WPF中播放声音
-
播放系统自带声音
在System.Media命名空间中
SystemSounds.Asterisk.Play(); SystemSounds.Beep.Play(); SystemSounds.Exclamation.Play(); SystemSounds.Hand.Play(); SystemSounds.Question.Play();
-
使用SoundPlayer播放.wav格式的声音
1)仅支持.wav音频文件
2)不支持同时播放多个音频
3)无法控制声音的音量
4)支持同步、异步播放
5)支持循环播放
6)支持文件和流播放
下面是示例:
SoundPlayer player = new SoundPlayer("test.wav"); player.Play();
-
使用MediaPlayer播放声音
这个是基于Windows Media Player构建的,因此支持Windows Media Player能播放的格式。
1)可以同时播放多个声音
2)可以调整音量(Volume属性)
3)可以设置IsMuted属性实现静音
4)可以通过NaturalDuration属性得到音频的藏毒,通过Position属性得到当前播放进度
MediaPlayer player = new MediaPlayer(); player.Open(new Uri("test.mp3", UriKind.Relative)); player.Play();
-
使用MediaElement播放声音
<MediaElement Source="test.mp3" LoadedBehavior="Play"/>
-
使用mciSendString系统播放音乐
/// <summary> /// 音乐播放 /// </summary> public static class AudioUtil { [DllImport("winmm.dll")] public static extern uint mciSendString(string lpstrCommand, string lpstrReturnString, uint uReturnLength, IntPtr hWndCallback); public static uint Play(string fileName) { //mciSendString(@"close media", null, 0, IntPtr.Zero); mciSendString($@"open ""{fileName}"" type mpegvideo alias media", null, 0, IntPtr.Zero); return mciSendString("play media repeat", null, 0, IntPtr.Zero); } public static uint Stop() { return mciSendString("close media", null, 0, IntPtr.Zero); } }
其中media是别名,是在open命令时使用alias指定的别名,后面停止播放时要带上这个别名。
-
使用NAudio第三方库播放声音
NuGet安装NAudio
NAudio.Wave.Mp3FileReader mp3File = new NAudio.Wave.Mp3FileReader("test.mp3");//加载音频文件 NAudio.Wave.WaveOut waveOut = new NAudio.Wave.WaveOut(); waveOut.Init(mp3File);//初始化音频文件 waveOut.Play();
-
使用Speech文字转音频播放声音
需要添加引用System.Speech
using (SpeechSynthesizer speech = new SpeechSynthesizer()) { speech.Rate = 0; speech.Volume = 100; speech.Speak("你好啊"); }