音频初始化正常,但 SDL_GetNumAudioDevices(0) 报告 0 个设备 - Ubuntu 20.04
Audio initialization is fine but SDL_GetNumAudioDevices(0) reports 0 devices - Ubuntu 20.04
音频在 Ubuntu 20.04 上没有问题,但 SDL2 在初始化正常时无法使用音频设备。在 Ubuntu 18.04 上,它按预期工作。在这两个安装中,SDL2 都是从源代码 (2.0.12) 编译而来的。
这是代码示例:
#include "SDL2/SDL.h"
int main(void)
{
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0)
SDL_Log("SDL fails to initialize audio subsystem!\n%s", SDL_GetError());
else
SDL_Log("SDL Audio was initialized fine!\n");
SDL_Log("Number of audio devices: %d\n", SDL_GetNumAudioDevices(0));
SDL_AudioSpec want, have;
// Set required audio specs
want.freq = 44100;
want.format = AUDIO_S16SYS;
want.channels = 2;
want.samples = 1024;
want.padding = 0;
want.callback = NULL;
want.userdata = NULL;
device = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
if (device == 0)
SDL_Log("Failed to open audio: %s\n", SDL_GetError());
return 0;
}
这是输出:
SDL Audio was initialized fine!
Number of audio devices: 0
Failed to open audio: No such audio device
我发现了问题。在新 Ubuntu 20.04 安装中 libasound2-dev 库丢失。在从源代码编译SDL2之前需要安装它。
奇怪的是,当驱动程序不存在时,音频初始化也很好
音频在 Ubuntu 20.04 上没有问题,但 SDL2 在初始化正常时无法使用音频设备。在 Ubuntu 18.04 上,它按预期工作。在这两个安装中,SDL2 都是从源代码 (2.0.12) 编译而来的。
这是代码示例:
#include "SDL2/SDL.h"
int main(void)
{
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0)
SDL_Log("SDL fails to initialize audio subsystem!\n%s", SDL_GetError());
else
SDL_Log("SDL Audio was initialized fine!\n");
SDL_Log("Number of audio devices: %d\n", SDL_GetNumAudioDevices(0));
SDL_AudioSpec want, have;
// Set required audio specs
want.freq = 44100;
want.format = AUDIO_S16SYS;
want.channels = 2;
want.samples = 1024;
want.padding = 0;
want.callback = NULL;
want.userdata = NULL;
device = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0);
if (device == 0)
SDL_Log("Failed to open audio: %s\n", SDL_GetError());
return 0;
}
这是输出:
SDL Audio was initialized fine!
Number of audio devices: 0
Failed to open audio: No such audio device
我发现了问题。在新 Ubuntu 20.04 安装中 libasound2-dev 库丢失。在从源代码编译SDL2之前需要安装它。
奇怪的是,当驱动程序不存在时,音频初始化也很好