2

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

我已经检查过它是 wav 文件本身还是类似的问题,但是我使用哪个文件并不重要,它最终总是一样的。我还尝试更改 Mix_OpenAudio 函数中的值,例如频率和块大小。

我也尝试过在没有 SDL_mixer 的情况下播放声音,但使用 SDL_OpenAudio 等...结果是一样的,MP3 很好 WAVE 不是。

这不是我的电脑,使用 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;
    }

我没有收到任何错误消息或任何东西。

是文件。

4

2 回答 2

0

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

于 2019-08-01T11:03:15.783 回答
0

很多人似乎都有这样的问题。这个问题实际上与播放音频的格式有关。您需要让您的解码器将这些信息扔给您,或者只需要使用一种音频格式。

于 2021-08-22T02:50:10.163 回答