播放音频文件
Posted
技术标签:
【中文标题】播放音频文件【英文标题】:play audiofile 【发布时间】:2009-07-04 07:07:06 【问题描述】:我编写了一个通过 appln 播放 .wav 的代码。现在我想通过我的 appln 播放 mp3 文件 任何人都可以帮助解决这个问题。 这里我只有.net framework 1.1
【问题讨论】:
我误读了这个问题;错过了 mp3 部分... 【参考方案1】:如果您有 .NET 框架 1.1。只是,您最好的方法可能是对 mciSendCommand 使用 P/Invoke 包装器
[DllImport("winmm.dll")]
private static extern long mciSendString(
string strCommand, StringBuilder returnString,
int returnBufferLength, IntPtr callback);
void PlayFile(string mp3FileName)
string deviceType = "MPEGVideo";
string fileName = mp3FileName;
string alias = "MyMp3File";
string playCommand = string.Format("open \"0\" type 1 alias 2",
fileName, deviceType, alias);
mciSendString(playCommand, null, 0, IntPtr.Zero);
playCommand = string.Format("play 0 from 0", alias);
mciSendString(playCommand, null, 0, IntPtr.Zero);
// send these when you are finished
// playCommand = "stop MyMp3File";
// playCommand = "close MyMp3File";
【讨论】:
【参考方案2】:你可以试试NAudio。否则,您可以考虑使用使用 Interop 的本机库。
【讨论】:
NAudio 是针对 2.0 编译的,尽管您可能会发现您可以针对 1.1 重新编译您需要的位。如果您只需要能够启动和停止,还有更简单的方法(例如发送 MCI 字符串)。【参考方案3】:我建议使用 DirectShow - RenderFile API 非常简单。 This 站点似乎显示了 DShow 的托管包装器(警告程序员,我没有使用它)。
编辑补充:如果可能的话,我个人会远离 MCI API - 它们是非常旧的 API,而且不是特别可靠。
【讨论】:
很公平,我自己不使用 mci API。但是,尽管 RenderFile API 调用本身很简单,但在开始之前必须创建 .NET 包装器的大量 COM 接口对于大多数开发人员来说是令人生畏的,尤其是当您只想播放 MP3 文件时。托管包装器的链接仍然看起来很有帮助。来自我的 +1。以上是关于播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章