0

所以我在使用 SDL_mixer 时遇到了问题,它似乎在大量 mp3 上播放良好(虽然“很好”。我注意到在一些 MP3 的开头有一小段声音损坏,然后它开始播放)但在某些 MP3 文件中,只有绝对的沉默。好像什么都玩不了。而且 Mix_PlayMusic 似乎没有返回错误,也没有其他任何东西,但它似乎没有发出任何声音。有时我会在尝试播放这些文件时得到一个随机的“访问读取冲突”,但每隔一次,它只是沉默。

这是我用来播放 MP3 文件的代码:

#include "SDL.h"
#include "SDL_mixer.h"

#include <iostream>

bool initLibs()
{
    //Initialize all SDL subsystems
    if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
    {
        return false;
    }

    int flags = MIX_INIT_MP3 | MIX_INIT_OGG;
    if(Mix_Init(flags)!=flags)
    {
        return false;
    }

    //Initialize SDL_mixer
    if( Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, AUDIO_S16, 2, 4096 ) == -1 )
    {
        return false;
    }

    //If everything initialized fine
    return true;
}

int main(int argc, char* argv[])
{
    if(!initLibs())
    {
        std::cout << "error loading libraries" << std::endl;
    }
    Mix_Music* music = Mix_LoadMUS("test.mp3");
    if(music == nullptr)
    {
        std::cout << "error loading music: " << Mix_GetError() << std::endl;
    }
    else
    {
        if(Mix_PlayMusic(music, -1) == -1)
        {
            std::cout << "error playing music: " << Mix_GetError() << std::endl;
        }
    }
    SDL_Delay(30000);
    system("PAUSE");
    Mix_HaltMusic();
    Mix_FreeMusic(music);
    system("PAUSE");
    return 0;
}

我正在检查 MP3 文件中的差异,似乎唯一真正的区别是具有 LAME3.99 编码的文件似乎不起作用。有人能解释一下吗?

编辑:经过更多测试,它似乎也发生在其他人身上

4

0 回答 0