【问题标题】:play audiofile播放音频文件
【发布时间】:2009-07-04 07:07:06
【问题描述】:

我编写了一个通过 appln 播放 .wav 的代码。现在我想通过我的 appln 播放 mp3 文件 任何人都可以帮助解决这个问题。 这里我只有.net framework 1.1

【问题讨论】:

  • 我误读了这个问题;错过了 mp3 部分...

标签: c# .net audio 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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2011-11-26
    • 2020-02-11
    • 2021-11-26
    • 2017-08-27
    • 2021-05-19
    • 2017-05-08
    相关资源
    最近更新 更多