从 AudioDevices 中取出扬声器

Get Speakers out of AudioDevices

我正在尝试使用 Microsoft Expression Encoder 进行 ScreenCapture。 我想让扬声器脱离 AudioDevices(不是麦克风)。 我的问题是,每个设备的扬声器都有另一个名称。

我提出了检查设备名称是否包含 "Speaker" 的解决方案,但我认为这不适用于所有客户端设备。

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;
}

有人知道怎么做吗?

EncoderDevice 有一个 Category 枚举 属性。用

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

麦克风的 CategoryEncoderDeviceCategory.Capture

参见: