0
我正在使用可以枚举音频设备(提供名称和guid-id)并将音频设备设置为默认音频设备(通过id)的第三方DLL。如何获取默认音频设备?
如何获得当前音频设备(由OS使用)?我需要名称或设备ID。
This问题似乎没有有用的答案。
我正在使用可以枚举音频设备(提供名称和guid-id)并将音频设备设置为默认音频设备(通过id)的第三方DLL。如何获取默认音频设备?
如何获得当前音频设备(由OS使用)?我需要名称或设备ID。
This问题似乎没有有用的答案。
您可以使用DirectShow进行此操作。
private IBaseFilter CreateFilter(Guid category, string name)
{
object source = null;
Guid guid = typeof(IBaseFilter).GUID;
foreach (DsDevice device in DsDevice.GetDevicesOfCat(category))
{
if (device.Name == name)
{
device.Mon.BindToObject(null, null, ref guid, out source);
break;
}
}
return (IBaseFilter)source;
}
// Get device like this:
IBaseFilter defaultSoundDevice = CreateFilter(FilterCategory.AudioInputDevice, "Default DirectSound Device");
更新#2:
DsDevice[] audioRenderers;
audioRenderers = DsDevice.GetDevicesOfCat(FilterCategory.AudioInputDevice);
foreach (DsDevice device in audioRenderers)
{
MessageBox.Show(device.Name);
}
解释请如何来使用。 – AgentFire
您应该下载DirectShow.NET库(http://bit.ly/1fPJbjD)。它是Microsoft DirectShow的.NET包装器。您应该将DirectShow.NET引用添加到您的项目引用并使用我的代码。您可以从链接中找到并下载DirectShow.NET示例。如果你想知道DirectShow是什么:http://bit.ly/MykX2g。您可以使用DirectShow功能录制/播放/转换和很多东西。祝你好运;) –
我已经试过这个,但是你的'IBaseFilter'并没有为操作系统使用的实际音频设备提供GUID和NAME。 – AgentFire