C# 实现播放音频文件的方法与示例
|
admin
2024年7月3日 9:27
本文热度 2782
|
引言
在项目开发过程中,有时需要用到播放音频文件。例如,在程序出现异常或操作成功时播放特定音效提醒用户。在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 编辑过