我正在尝试在 C# 中使用 WASAPI,但我什至无法在 Visual Studio 中找到要引用的 dll。我应该在 COM 程序集中引用一个 dll 还是从 Microsoft 网站下载一个并引用它?是否有任何文档如何在 C# 中使用 WASAPI?
我想用它来设置麦克风提升级别。为此,我一直在使用 NAudio,但在 Windows 8.1 中它无法正常运行,请参阅this。它通过 winmm 调用设置提升级别。我以为我可以直接使用 WASAPI。
编辑
我试过 CSCore,它有一个用于设置麦克风增强的 WASAPI 调用的包装器。它成功设置了该值,但是在设置该值后,程序每次都因访问冲突异常而崩溃。这是 CSCore 的代码:
MMDeviceEnumerator deviceEnumerator = new MMDeviceEnumerator();
MMDeviceCollection deviceCollection = deviceEnumerator.EnumerateAudioEndPoints(EDataFlow.eCapture, DEVICE_STATE.DEVICE_STATE_ACTIVE);
MMDevice microphone = null;
for (int i = 0; i < deviceCollection.Count; i++)
{
MMDevice device = deviceCollection[i];
if (device.FriendlyName.Contains("Plantronics"))
{
microphone = device;
}
}
if (microphone != null && microphone.AudioSessionManager2.Sessions.Count < 1)
{
return;
}
AudioSessionControl2 activeSession = null;
for (int i = 0; i < microphone.AudioSessionManager2.Sessions.Count; i++)
{
if (microphone.AudioSessionManager2.Sessions[i].State == AudioSessionState.AudioSessionStateActive)
{
activeSession = microphone.AudioSessionManager2.Sessions[i];
}
}
if (activeSession == null)
{
return;
}
activeSession.SimpleAudioVolume.MasterVolume += 0.1f;
我还发现了 AudioSwitcher 库,它似乎也有一个包装器,但是无法更改麦克风音量。它总是-1。这是 AudioSwitcher 的代码:
CoreAudioController audioController = new CoreAudioController();
var devices = audioController.GetCaptureDevices(DeviceState.Active);
foreach (CoreAudioDevice device in devices)
{
if (device.FullName.Contains("Plantronics"))
{
device.Volume = 49;
}
}