c#播放wav/mp3格式的声音

第一种方法:

using System.Runtime.InteropServices;

namespace 使用API播放音乐
{
public class MP3Player
{
///


/// 文件地址
///

public string FilePath;

///


/// 播放
///

public void Play()
{
mciSendString("close all", "", 0, 0);
mciSendString("open " + FilePath + " alias media", "",0, 0);
mciSendString("play media", "", 0, 0);
}

///


/// 暂停
///

public void Pause()
{
mciSendString("pause media", "", 0, 0);
}

///


/// 停止
///

public void Stop()
{
mciSendString("close media", "", 0, 0);
}

///


/// API函数
///

[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
private static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
}
}

调用代码:

MP3Player mp3 = new MP3Player();
//设置要播放的文件
mp3.FilePath = "声音.mp3";
//播放
mp3.Play();
//暂停
mp3.Pause();
//停止
mp3.Stop();

第二种方法用directx

DirectSound不能建立设备播放非wav格式的文件,mp3格式的文件可以用Microsoft.DirectX.AudioVideoPlayback;命名空间下的Audio来播放。

初始化的时候,只需给定文件名和是否自动播放就可以了。

Audio audio = new Audio(stringFileName, false);

对于播放或者停止,可以调用audio.Play()和audio.Stop()方法。

察看是否在播放中,可以用audio.Playing属性察看。

以上加载在vs2010调试中出现的问题:

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起

查了网上的解决方法:这个问题只需要把vs2005菜单的 调试->异常->Managed Debuggin Assistants->LoaderLock 的选中状态去掉即可!如果异常(exception)这一项没有的话,在工具---自定义---命令选项卡---左边选择调试--右边把异常托到菜单里就可以了~

异常也有个快捷键Ctrl+Alt+E,修改Managed Debuggin Assistants->LoaderLock 的选中状态去掉即可

 第三种非常简单的随意的

using System.Media;


SoundPlayer sound = new SoundPlayer("声音.wav");
sound.Play();

这种方式只能播放一个文件。

第四种

下载Microsoft.DirectX.DLL和MicroSoft.DirectX.DirectSound.DLL两个文件,

并在项目上添加这两个DLL引用.

using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;

//创建设备
Device dv = new Device();
//设置优先级别
dv.SetCooperativeLevel(this, CooperativeLevel.Priority);
//开辟二级缓冲区
SecondaryBuffer buf = new SecondaryBuffer("声音.wav", dv);
//开始播放
buf.Play(0, BufferPlayFlags.Default);

这种方式只支持WAV格式的音频,不过可以同时播放多个文件

 

注:第一种方法未试用过。第二种方法完全可以播放wav文件和mp3格式的文件。

你可能感兴趣的:(C#,DirectX,DirectXSound,MP3,WAV)