音频初始化正常,但 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之前需要安装它。

奇怪的是,当驱动程序不存在时,音频初始化也很好