C++ SDL_混音器波形音频格式质量差

C++ SDL_混音器波形音频格式质量差,c++,audio,g++,wav,sdl-mixer,C++,Audio,G++,Wav,Sdl Mixer,我想写一个简单的控制台音乐播放器,它支持.mp3和.wav音频格式。 使用SDL_混音器播放.wav文件会降低声音质量,但使用mp3文件则不会。当.wav文件开始播放时,会有连续的“噼啪”声,其余的都很好 我已经检查过它是wav文件本身还是类似的问题,但不管我使用哪个文件,结果总是一样的。我还尝试更改Mix_OpenAudio函数中的值,例如频率和chunksize 我也尝试过在没有SDL_混音器的情况下播放声音,但使用SDL_OpenAudio等。。。结果是一样的,MP3不是细波 这不是我的电

我想写一个简单的控制台音乐播放器,它支持.mp3和.wav音频格式。 使用SDL_混音器播放.wav文件会降低声音质量,但使用mp3文件则不会。当.wav文件开始播放时,会有连续的“噼啪”声,其余的都很好

我已经检查过它是wav文件本身还是类似的问题,但不管我使用哪个文件,结果总是一样的。我还尝试更改Mix_OpenAudio函数中的值,例如频率和chunksize

我也尝试过在没有SDL_混音器的情况下播放声音,但使用SDL_OpenAudio等。。。结果是一样的,MP3不是细波

这不是我的电脑,有vlc或rythmbox(音频播放器)。wav文件播放没有问题

#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>

using namespace std;

    int main()
    {
        // Music which will be played
        Mix_Music* Music = NULL;

        // Init
        //
        // Init SDL Audio
        SDL_Init(SDL_INIT_AUDIO);

        // Init SDL_mixer
        Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 512);

        // Load the files
        //
        // Load the music
        Music = Mix_LoadMUS("Star Trek - Deep Space Nine.mp3");

        // Play the music
        Mix_PlayMusic(Music, 1);

        while (Mix_PlayingMusic() == 1)
        {

        }

        // clean up
        //
        // free the music
        Mix_FreeMusic(Music);

        // Quit Mixer
        Mix_CloseAudio();

        // Quit SDL
        SDL_Quit();

        return 0;
    }
#包括
#包括
使用名称空间std;
int main()
{
//将要播放的音乐
Mix_Music*Music=NULL;
//初始化
//
//初始化SDL音频
SDL_Init(SDL_Init_音频);
//初始化SDL_混频器
混合OpenAudio(44100,混合默认格式,2512);
//加载文件
//
//加载音乐
音乐=Mix_LoadMUS(“星际迷航-深太空9.mp3”);
//演奏音乐
混合播放音乐(音乐,1);
while(Mix_PlayingMusic()==1)
{
}
//清理
//
//释放音乐
混合音乐(音乐);
//退出混音器
混音;
//退出SDL
SDL_退出();
返回0;
}
我没有收到任何错误消息或任何东西


是文件。

所以我现在在Windows上尝试了相同的方法,它在那里工作没有问题,所以这可能是编译器的问题,或者我不知道。很奇怪。我会保持原样,只做.mp3。

请提供一段代码(我们实际上可以编译),以及您遇到问题的.wav文件。@HolyBlackCat这是我的第一篇文章,我希望您能原谅:D.我现在编辑了代码,您可以编译它了。