SDL_mixer没有声音

时间:2013-07-04 14:12:01

标签: c++ ubuntu sdl-mixer

我阅读并尝试了该主题的所有其他帖子,但没有任何帮助。当我尝试用Mix_PlayChannel()播放音乐时,我没有收到错误,也没有听到声音!我现在试了几个小时没有任何帮助。该计划刚刚结束愉快。但没有声音!我使用的是Ubuntu 12.04 64bit。

谢谢!

[编辑]

以下是我使用的代码:

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

int main(int argc, char** argv)  {

Mix_Music *music = NULL;
Mix_Chunk *wave = NULL;

SDL_Init(SDL_INIT_AUDIO);

int audio_rate = 44100;
Uint16 audio_format = AUDIO_S16; /* 16-bit stereo */
int audio_channels = 1;
int audio_buffers = 4096;

if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers) < 0) {
    printf("Unable to open audio!\n");
    exit(1);
}

if(Mix_Init(MIX_INIT_MOD) != MIX_INIT_MOD)
    std::cout << "errer";

Mix_Volume(-1, MIX_MAX_VOLUME);

music = Mix_LoadMUS("1.wav");
wave = Mix_LoadWAV("1.wav");

if (music == NULL) {
    std::cout << "Could not load 1.wav\n";
std::cout << Mix_GetError();
}

if (wave == NULL) {
    std::cout << "Could not load 1.wav\n";
std::cout << Mix_GetError();
}

Mix_VolumeChunk(wave, MIX_MAX_VOLUME);
Mix_VolumeMusic(MIX_MAX_VOLUME);

Mix_PlayMusic(music, 0);
std::cout << Mix_GetError();
Mix_FadeInChannelTimed(-1, wave, 0, 100,1);
std::cout << Mix_GetError();

return 1;
}

我尝试PlayMusic()和Mix_FadeInChannelTimed()。两个文件都正确加载但未播放。声音没有静音,wav文件可以播放或播放其他工具。我和alsamixer核实所有频道都是开放的而不是太低。

1 个答案:

答案 0 :(得分:1)

我现在发现该程序需要运行,直到声音播放完毕!我在play命令后添加了一个usleep()命令,它运行得很好。所以,PlayMusic()无法继续运行。