2014-02-06 155 views
0

我正在使用可以枚举音频设备(提供名称和guid-id)并将音频设备设置为默认音频设备(通过id)的第三方DLL。如何获取默认音频设备?

如何获得当前音频设备(由OS使用)?我需要名称或设备ID。

This问题似乎没有有用的答案。

This one as well

回答

2

您可以使用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); 
} 
+0

解释请如何来使用。 – AgentFire

+0

您应该下载DirectShow.NET库(http://bit.ly/1fPJbjD)。它是Microsoft DirectShow的.NET包装器。您应该将DirectShow.NET引用添加到您的项目引用并使用我的代码。您可以从链接中找到并下载DirectShow.NET示例。如果你想知道DirectShow是什么:http://bit.ly/MykX2g。您可以使用DirectShow功能录制/播放/转换和很多东西。祝你好运;) –

+0

我已经试过这个,但是你的'IBaseFilter'并没有为操作系统使用的实际音频设备提供GUID和NAME。 – AgentFire

相关问题