【问题标题】:How to play MP3 files in C?如何在 C 中播放 MP3 文件?
【发布时间】:2010-09-30 13:01:56
【问题描述】:

我正在寻找用 C 语言播放 MP3 文件的最简单方法。我正在寻找一个库,我可以在其中调用文件名上的函数,或者一个可以运行和退出的可执行文件。请提出建议。

【问题讨论】:

  • 这个库应该有什么样的许可证?我猜有几个 GPL 的(尽管 mp3 格式/算法总是有/有它的许可证问题),但这些可能不适合你的项目。还有:windows/osx/linux?

标签: c mp3


【解决方案1】:

使用FMOD(跨平台),应该就这么简单:

#include <conio.h>
#include "inc/fmod.h"

FSOUND_SAMPLE* handle;

int main ()
{
   // init FMOD sound system
   FSOUND_Init (44100, 32, 0);

   // load and play mp3
   handle=FSOUND_Sample_Load (0,"my.mp3",0, 0, 0);
   FSOUND_PlaySound (0,handle);

   // wait until the users hits a key to end the app
   while (!_kbhit())
   {
   }

   // clean up
   FSOUND_Sample_Free (handle);
   FSOUND_Close();
}

作为旁注,我建议您使用 C++ 而不是 C。

【讨论】:

    【解决方案2】:

    BASS DLL 非常易于使用,可能会满足您的需求。不过,它只能免费用于非商业用途。

    如果您需要更多控制,您将需要一个编解码器(我更喜欢 libMad)和一些声音输出 API,例如 Windows 或 ALSA 或 Linux 上的 DirectSound(或任何 Linux 人本周用于声音的)

    【讨论】:

      【解决方案3】:

      我不知道这是否是“最简单的方法”,但您可以看看 SDL(以及 SDL_sound)。

      【讨论】:

        【解决方案4】:

        如果您使用的是 Windows 或 OSX,我推荐 BASS (http://www.un4seen.com/bass.html)

        您可以下载该库并查看代码示例以开始使用。 C 目录中的“竞赛”示例是一个很好的起点。

        【讨论】:

          【解决方案5】:

          在 Win32 上,您不需要任何库。 使用标准 Win32 api(mp3 是原生的)

          参见 Adv. Win32 api 新闻组: 新闻://comp.os.ms-windows.programmer.win32 这是一个常见问题解答。

          【讨论】:

            【解决方案6】:

            如果你可以使用 C++ 并且你在 windows 平台上工作,那么使用 WMp3

            该库易于使用,可让您播放、暂停、查找 mp3 文件。

            【讨论】:

              【解决方案7】:

              或者是某人已经写好的东西,会运行然后退出。

              你可以使用mpg123(或者它的定点端口,mpg321

              mpg123 <mp3file>
              

              将播放一个 mp3 文件并退出。

              【讨论】:

                【解决方案8】:

                mpg123 有一个通用远程接口,您可以通过使用 -R 选项启动可执行文件来访问该接口。然后,您可以通过 fifo 管道或子进程的标准输入发送命令(例如加载、暂停等)。如果没有别的,手动调试和测试很容易。

                【讨论】:

                  【解决方案9】:
                  【解决方案10】:

                  基本上可以使用windows.h头文件

                  #include <windows.h>
                  void main()
                  {
                      //replace music with your filename
                      system("start music.mp3");
                  }
                  

                  【讨论】:

                  • system 来自 stdlib.h,而不是来自 windows.h
                  猜你喜欢
                  • 1970-01-01
                  • 2011-06-11
                  • 2012-04-11
                  • 1970-01-01
                  • 2011-03-21
                  • 2013-05-28
                  • 2021-08-14
                  • 1970-01-01
                  • 2021-12-25
                  相关资源
                  最近更新 更多