c#播放wav/mp3格式的声音。
2013-08-17 12:59
183 查看
第一种方法:
using System.Runtime.InteropServices;
namespace 使用API播放音乐
{
public class MP3Player
{
/// <summary>
/// 文件地址
/// </summary>
public string FilePath;
/// <summary>
/// 播放
/// </summary>
public void Play()
{
mciSendString("close all", "", 0, 0);
mciSendString("open " + FilePath + " alias media", "",0, 0);
mciSendString("play media", "", 0, 0);
}
/// <summary>
/// 暂停
/// </summary>
public void Pause()
{
mciSendString("pause media", "", 0, 0);
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
mciSendString("close media", "", 0, 0);
}
/// <summary>
/// API函数
/// </summary>
[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格式的文件。
using System.Runtime.InteropServices;
namespace 使用API播放音乐
{
public class MP3Player
{
/// <summary>
/// 文件地址
/// </summary>
public string FilePath;
/// <summary>
/// 播放
/// </summary>
public void Play()
{
mciSendString("close all", "", 0, 0);
mciSendString("open " + FilePath + " alias media", "",0, 0);
mciSendString("play media", "", 0, 0);
}
/// <summary>
/// 暂停
/// </summary>
public void Pause()
{
mciSendString("pause media", "", 0, 0);
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
mciSendString("close media", "", 0, 0);
}
/// <summary>
/// API函数
/// </summary>
[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#播放wav/mp3格式的声音
- 在C#中利用DirectX实现声音播放
- 建立第一个directX程序——在C#下利用DirectSound实现声音播放
- c#中播放声音
- C#播放声音的四种方法
- C#中如何控制播放音乐的声音大小
- 在C#中利用DirectX实现声音播放
- 在C#中利用DirectX实现声音播放
- C#调用winmm.dll播放声音_中国创造
- 用C#播放声音文件
- 在C#中利用DirectX实现声音播放
- 用C#实现多种方式播放Wav声音
- 在C#中利用DirectX实现声音播放
- 『原创』+『参考』亲手实验:使用C#在PPC中播放声音
- C#播放声音
- 几种C#实现播放声音的方法 DirectX、SoundPlayer等
- C#播放声音的四种方法 +AxWindowsMediaPlayer的详细用法
- C#播放声音的四种方法
- C#播放声音类
- C#播放声音的四种方法