【问题标题】:SDL Mix_LoadMUS not loading .mp3SDL Mix_LoadMUS 未加载 .mp3
【发布时间】:2018-05-16 22:44:27
【问题描述】:

所以显然我一直在尝试使用 SDL_mixer 加载 .mp3。但是,这不起作用,与 libsdl wiki 不同:SDL_mixer Mix_LoadMUS

我希望它能够工作,但在加载和播放文件时,我的控制台应用程序中弹出以下错误:

Mix_LoadMUS: Unrecognized audio format
Mix_PlayMusic: music parameter was NULL

就我而言,我一直在尝试通过以下方式加载 test.mp3

Mix_Music * m_mainMusic;

m_mainMusic = Mix_LoadMUS("test.mp3");
if (m_mainMusic != nullptr)
    printf("Loaded the file\n");
else
    printf("Mix_LoadMUS: %s\n", Mix_GetError());

if (Mix_PlayMusic(m_mainMusic, -1) == -1) 
    printf("Mix_PlayMusic: %s\n", Mix_GetError());

我显然已经初始化了 SDL 子系统。

【问题讨论】:

  • 请发布一个MVCE和mp3文件。
  • 您是否使用至少MIX_INIT_OGG 位致电Mix_Init?它的返回值是否与您传递给它的位掩码相同?
  • 对于我在 macOS 上的情况,我需要安装 libmpg123(播放 MP3)并将其 .dylib 与可执行二进制文件位于同一目录级别。 WINdows 也是如此,因为我使用 macOS 的交叉编译对其进行了测试。同样,您需要使用标志调用Mix_Init() 来为您打算使用的文件格式初始化SDL_mixer,并检查其返回结果,以便您可以更准确地调试它出了什么问题。

标签: c++ sdl mp3 sdl-mixer


【解决方案1】:

在上述解释的帮助下,我试图重现您的问题,而导致类似问题的唯一原因是缺少运行时库。确保所有必需的库在运行时可用(将它们复制到可执行文件的文件夹中或设置环境变量或使用静态链接。)随 SDL_mixer 分发的运行时库如下:libmpg123-0、libmodplug-1、 libFLAC-8、libogg-0、libopus-0、libopusfile-0、libvorbis-0、libvorbisfile-3 和 SDL2_mixer。

这些可以在这里获取:https://www.libsdl.org/projects/SDL_mixer/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2014-07-18
    • 2011-10-12
    相关资源
    最近更新 更多