2014-02-06 200 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

相關問題