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