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