从 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)
{
...
}
麦克风的 Category
为 EncoderDeviceCategory.Capture
。
参见:
我正在尝试使用 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)
{
...
}
麦克风的 Category
为 EncoderDeviceCategory.Capture
。
参见: