播放音频文件

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。

以上是关于播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章

按顺序播放音频文件[关闭]

如何用AVAudioPlayer依次播放多个音频文件

OpenCV中如何播放avi文件的音频

如何同时播放多个音频文件

从数据库播放多个音频文件

有没有办法在音频 B 也开始播放后修复音频 A 的播放?