第一种方法:
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调试中出现的问题:
查了网上的解决方法:这个问题只需要把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格式的文件。