首页 > 解决方案 > 具有多个设备的 SDL_OpenAudioDevice

问题描述

我目前正在编写一个应用程序,它将向 3 个不同的音频设备输出声音。为此,我在我的电脑上安装了 3 个 USB 音频设备,都是同一个品牌。我想使用 SDL2 作为输出设备(尽管我对其他建议持开放态度)。我查看了文档,它声明为第一个参数(设备):

SDL_GetAudioDeviceName() 报告的 UTF-8 字符串;见备注

现在我编写了一个示例程序,它只列出了可用的设备:

#include <SDL2/SDL.h>
#include <iostream>

int main()
{
        SDL_Init( SDL_INIT_EVERYTHING );
        std::cout << SDL_GetError() << std::endl;
        atexit( SDL_Quit );
        int count = SDL_GetNumAudioDevices(0);
        for (int i = 0; i < count; ++i)
        {
                std::cout << "Device " << i << ": " << SDL_GetAudioDeviceName(i, 0) << std::endl;
        }
        return 0;
}

它枚举所有可用的设备。问题是,所有 3 台设备都会给我相同的名称:

Device 0: Internes Audio Digital Stereo (IEC958)
Device 1: C-Media Electronics, Inc. Audio Adapter
Device 2: C-Media Electronics, Inc. Audio Adapter
Device 3: C-Media Electronics, Inc. Audio Adapter

有什么方法可以使用其他东西(例如 USB 路径)作为参数或确保我可以打开所有 3 个设备?

标签: c++linuxaudiosdl

解决方案


推荐阅读