SDL_mixer某些mp3文件没有声音

时间:2015-05-30 20:16:19

标签: c++ c mp3 sdl sdl-mixer

所以我遇到了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编码的那些似乎不起作用。有人能解释一下吗?

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

0 个答案:

没有答案