2013-07-04 98 views
1

我阅读并尝试了该主题的所有其他帖子,但没有任何帮助。当我尝试用Mix_PlayChannel()播放音乐时,我不会收到错误,也不会听到一些声音!我现在尝试了几个小时,没有任何帮助。该方案只是愉快地完成。但没有声音!我正在使用Ubuntu 12.04 64位。SDL_mixer没有声音

谢谢!

[编辑]

这里是我使用的代码:

#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文件可以用aplay或其他工具播放。我检查alsamixer所有渠道是开放的,不能太低。

+0

而通道没有静音?音量调高了吗?或者当你期望通过扬声器或者其他类似的设备将输出设置为耳机? –

+0

我现在发现程序需要运行,直到声音播放完毕!我在播放命令后添加了一个usleep()命令,并且播放效果很好。所以这真的没有提到PlayMusic()不能继续运行。 – beseder

+0

那么你是否回答了你自己的问题?如果是这样,也许发布一个答案? .................. 我错过了这个评论。我自己尝试过。我的编译器警告我说Mix_PlayMusic不需要3个参数。我扔掉了最后一个,声音也很好。 –

回答

1

我现在发现程序需要运行直到声音播放完毕!我在播放命令后添加了一个usleep()命令,并且播放效果很好。所以这真的没有提到PlayMusic()不能继续运行。

+0

这也解决了我的问题,谢谢! – user3366592