C# 实现播放音频文件的方法与示例
				
									
					
					
						|  | 
							admin 2024年7月3日 9:27
								本文热度 2818 | 
					
				 
				引言
在项目开发过程中,有时需要用到播放音频文件。例如,在程序出现异常或操作成功时播放特定音效提醒用户。在C# 中是使用什么方法来播放音效文件,又有几种方法可以实现,本文将介绍几种实现的方法。
方法
1、播放系统事件的声音
使用 System.Media 命名空间的 SystemSounds 类,它只能播放系统定义的几个声音,如 Question、Beep、Asterisk、Hand、Exclamation。using System;using System.Media;namespace Fountain.WinConsole.SoundDemo{    internal class Program    {        static void Main(string[] args)        {            SystemSounds.Question.Play();            Console.ReadKey();            SystemSounds.Beep.Play();            Console.ReadKey();            SystemSounds.Asterisk.Play();            Console.ReadKey();            SystemSounds.Hand.Play();            Console.ReadKey();            SystemSounds.Exclamation.Play();            Console.ReadKey();        }    }}
2、使用 SoundPlayer 播放声音
使用 System.Media 命名空间的 SoundPlayer 类,可以方便地播放wav 类型的声音文件。| 方法 | 描述 | 
|---|
| Load | 同步加载声音文件。 | 
| LoadAsync | 用新线程加载声音文件。 | 
| Play | 用新线程播放声音文件。 | 
| PlaySync | 阻塞进程,播放完毕后才会执行后面的代码。 | 
| PlayLooping | 用新线程循环播放声音文件。 | 
| Stop | 停止播放 | 
using System;using System.Media;using System.Threading;namespace Fountain.WinConsole.TextToSpeech{    internal class Program    {        static void Main(string[] args)        {            #region 用属性指定声音文件位置            SoundPlayer soundPlayer = new SoundPlayer();            // 声音文件在执行程序的 Sound 目录下            soundPlayer.SoundLocation = @"Sound\Error.wav";            // 加载            soundPlayer.Load();            // 阻塞进程,播放完毕后才会执行后面的代码            soundPlayer.PlaySync();            #endregion            #region 在构造方法指定声音文件位置            SoundPlayer errorSoundPlayer = new SoundPlayer(@"Sound\Error.wav");            // 循环播放            errorSoundPlayer.PlayLooping();            //             Thread.Sleep(6000);            //停止播放            errorSoundPlayer.Stop();            #endregion            Console.ReadKey();        }    }}
3、使用Windows API函数播放
调用外部 winmm.dll 文件,使用其提供声音播放函数,如 mciSendString 实现对声音文件的播放,该函数支持播放 mp3文件。using System;using System.Runtime.InteropServices;using System.Text;using System.Threading;namespace Fountain.WinConsole.TextToSpeech{    internal class Program    {        [DllImport("winmm.dll", CharSet = CharSet.Auto)]        public static extern int mciSendString(string command, StringBuilder returnString, int uReturnLength, int hwndCallback);
        static void Main(string[] args)        {            string aliasName = "wavsong";            string wavFileName = @"C:\Error.wav";            //打开一个媒体文件            mciSendString(string.Format("open \"{0}\" alias {1}", wavFileName, aliasName), null, 0, 0);            // 播放媒体            mciSendString(string.Format("play {0}",aliasName), null, 0, 0);            Thread.Sleep(2000);            //  暂停媒体播放            mciSendString(string.Format("pause {0}",aliasName), null, 0, 0);            // 关闭媒体播放            mciSendString(string.Format("close {0}",aliasName), null, 0, 0);            Console.ReadKey();        }    }}
小结
以上介绍了三种播放音频文件的方法,当然还有其它方法可以实现,这就不逐一提供示例介绍。如使用DirectX、Windows Media Player组件或者三方库等。
该文章在 2024/7/3 9:29:08 编辑过