C++ 使用SDL_混音器时没有声音
出于某些非常奇怪的原因,SDL_混音器绝对不会播放声音。我尝试了一切:重新安装库,检查音乐是否可以播放,使用Mix_FadeInMusic和Mix_FadeOutMusic,但完全没有效果。它告诉我音乐正在加载,它告诉我它正在播放。我正在使用Windows 8.1 64位和VC 2013 代码:C++ 使用SDL_混音器时没有声音,c++,sdl,sdl-mixer,C++,Sdl,Sdl Mixer,出于某些非常奇怪的原因,SDL_混音器绝对不会播放声音。我尝试了一切:重新安装库,检查音乐是否可以播放,使用Mix_FadeInMusic和Mix_FadeOutMusic,但完全没有效果。它告诉我音乐正在加载,它告诉我它正在播放。我正在使用Windows 8.1 64位和VC 2013 代码: 令人惊讶的是,SDL需要Windows下的一个环境变量(一个最初针对Linux的工件)才能实际输出音频 尝试设置SDL_AUDIODRIVER=waveout(也可以使用=dsound) 或者,您可以在
令人惊讶的是,SDL需要Windows下的一个环境变量(一个最初针对Linux的工件)才能实际输出音频 尝试设置SDL_AUDIODRIVER=waveout(也可以使用=dsound) 或者,您可以在SDL_Init()调用之后调用SDL_AudioInit(“waveout”)或SDL_AudioInit(“dsound”)。(为了提高效率,可以将flags参数修改为SDL_Init(),以指定除音频以外的所有内容) SDL_AudioInit()被作者评论为“内部”api。在图书馆的其他地方,它被称为。。。猜猜看。。。使用从环境变量获取的字符串初始化音频 我在使用ffmpeg的ffplay时遇到了这个问题,ffplay依赖于(静态链接的)SDL来输出音频(除非/直到我手动设置env变量,否则无法输出音频) 我推测SDL的作者有一些默认设置,在Linux下是合理的,但在Windows下会造成混乱: 像您的(和ffplay)这样的客户端代码不会返回任何错误,也不会出现异常,只是SDL很高兴地将音频推到了空白处
SDL_Init(SDL_INIT_EVERYTHING);
// Create window
Mix_Init(MIX_INIT_MP3 | MIX_INIT_OGG | MIX_INIT_FLAC | MIX_INIT_FLUIDSYNTH | MIX_INIT_MOD | MIX_INIT_MODPLUG);
if (Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096)) {
printf("Unable to open audio!\n");
ovr_Shutdown();
SDL_Quit();
exit(1);
}
music = Mix_LoadMUS(tmpLoc);
if (music == NULL) SDL_ShowSimpleMessageBox(NULL, "", "Music is null", window);
Mix_PlayMusic(music, -1,1000);
if (!Mix_PlayingMusic()) SDL_ShowSimpleMessageBox(NULL, "", "No music playing", window);
// OpenGL stuff
while (quit == false)
{
// Loop
}
Mix_HaltMusic();
Mix_FreeMusic(music);
Mix_CloseAudio();
Mix_Quit();
SDL_DestroyWindow(window);
SDL_Quit();
return 0;