Получите динамики из AudioDevices

Я пытаюсь сделать ScreenCapture с помощью Microsoft Expression Encoder. Я хочу вывести динамики из AudioDevices (НЕ из микрофона). Моя проблема в том, что каждое устройство имеет другое название для своих динамиков.

Я предложил решение проверить, содержит ли имя устройства "Динамик", но я думаю, что это не сработает на каждом клиентском устройстве.

private EncoderDevice GetAudioDevice()
{
    EncoderDevice audioDevice = null;
    Collection<EncoderDevice> audioDevices = 
        EncoderDevices.FindDevices(EncoderDeviceType.Audio);

    try
    {
        foreach (var item in audioDevices)
        {
            if (item.Name.ToUpper().Contains("SPEAKER"))
            {
                audioDevice = item;
            }
            else
            {
                audioDevice = audioDevices.First();
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Keine AudioDevices gefunden!");
    }

    return audioDevice;
}

Кто-нибудь знает, как это сделать?

1 ответ

Решение

EncoderDevice имеет Category enum property. Тест с

if (item.Category == EncoderDeviceCategory.Playback)
{
    ...
}

Микрофон будет иметь Category из EncoderDeviceCategory.Capture,

Увидеть:

Другие вопросы по тегам