gpt4 book ai didi

c++ - 初始化 SDL_Mixer 给出错误 "No available audio device"

转载 作者:可可西里 更新时间:2023-11-01 18:36:10 28 4
gpt4 key购买 nike

我正在开发一个使用 SDL/SDL_Mixer 播放 wav 文件的 C++ 应用程序。我一直在 Mac 上开发应用程序,没有太大问题。但是,我确实需要这个应用程序在 Linux 上运行,所以我将 VirtualBox 安装在装有 Ubuntu 12.04 LTS 的 Windows 7 机器上。编译工作正常,直到我真正尝试初始化系统。然后,SDL_Mixer 给出错误“没有可用的音频设备。”

这是抛出错误的代码:

using namespace std;

void simple_sound_init() {
if (SDL_Init(SDL_INIT_AUDIO) == -1) {
fprintf(stderr, "init SDL error: %s\n", SDL_GetError());
SDL_Quit();
exit(1);
}

if (Mix_OpenAudio(SOUNDSAMPLERATE, MIX_DEFAULT_FORMAT, 1, 1024) != 0) {
fprintf(stderr, "initialize audio error: %s\n", Mix_GetError());
Mix_CloseAudio();
SDL_Quit();
exit(1);
}

Mix_ChannelFinished(simple_sound_channel_finised);
}

我得到的确切错误是:

initialize audio error: No available audio device

P/S:我在网上广泛搜索了解决方案,并尝试检查库安装等。但是,由于我可能遗漏了一些东西,欢迎任何基本的库建议,我会的确认我已设置它们。

最佳答案

我在相同情况下遇到了完全相同的问题,但使用的是 ubuntu 14.04LTS(虚拟机,W7 作为主机)。但问题不在于 VM 配置(声音在其他 ubuntu 应用程序中工作正常)。

我在那里找到了答案: http://forums.libsdl.org/viewtopic.php?t=7609&sid=40fdb9756b8e22e1b8253cda3338845f

感谢 Ryan C. Gordon 写道:

“如果您构建了自己的 SDL,您可能没有开发 header 对于 PulseAudio(或 ALSA),所以它尝试使用/dev/dsp,但它不存在于许多现代 Linux 系统中(因此,SDL_Init(SDL_INIT_AUDIO)成功,但当您尝试打开设备时未找到任何设备)。 “容易得到安装 libasound2-dev libpulse-dev"并重建 SDL...让配置脚本找到新的 header ,因此它包括 PulseAudio 和 ALSA 支持。”

我已经从源代码有效地构建了 SDL 和 SDL-mixer,但没有来自 pulseAudio 或 ALSA 的任何 header 。安装提到的库并重新编译 SDL 和 SDL_mixer (v1.2) 后,声音工作正常。

如果问题依然存在,他还说了另一种解决方案:

“如果您没有构建自己的 SDL,也许您可​​以强制它使用不同的音频路径:SDL_AUDIODRIVER=脉冲./mytestprogram或者SDL_AUDIODRIVER=alsa ./mytestprogram"

我没有尝试,因为第一个解决方案对我来说是好的。

关于c++ - 初始化 SDL_Mixer 给出错误 "No available audio device",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com