我在软件中使用NAudio和AudioSwitcher库。我想更改一个音频设备的音量,如下图所示:
不幸的是,我找不到描述如何使用2个库之一访问此混音器中的音量控件。
在任何地方都有关于该库的文档,或者有人为我提供示例?
到目前为止,我只设法访问了此音量控制,但这与上面的方法不同
对于我设法使用的设置,我使用:
IEnumerable<CoreAudioDevice> DeviceList = m_Controller.GetPlaybackDevices();
foreach (CoreAudioDevice PlaybackDevice in DeviceList)
{
if (PlaybackDevice != null)
{
if (PlaybackDevice.State == AudioSwitcher.AudioApi.DeviceState.Disabled)
continue;
string strTmp = PlaybackDevice.FullName.ToUpper();
if (PlaybackDevice.FullName.Contains("xxxxx"))
{
m_PlaybackDevice = PlaybackDevice;
m_PlaybackDevice.SetAsDefault();
m_PlaybackDevice.SetAsDefaultCommunications();
PlaybackDevice.SetVolumeAsync(100);
}
}
}
但这不是第一张图片的音量设置
更新1:
我尝试使用nAudio示例进行链接
try
{
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
{
try
{
System.Diagnostics.Debug.Print(dev.FriendlyName);
//dev.AudioEndpointVolume.Mute = true;
}
catch (Exception ex)
{
//Do something with exception when an audio endpoint could not be muted
}
}
}
catch (Exception ex)
{
//When something happend that prevent us to iterate through the devices
}
但是,这仅给我一张硬件设备列表,而不是第一张图片中的应用程序列表。我需要申请清单。例如当firefox运行时,我可以在该音频混合器面板中更改firefox应用程序的音量。
更新2
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
有时会抛出,但并不总是例外:
Blockquote System.InvalidCastException:类型NAudio.CoreAudioApi.Interfaces.MMDeviceEnumeratorComObject中的Typs“ System .__ ComObject” kann nicht“。 bei NAudio.CoreAudioApi.MMDeviceEnumerator..ctor()
有时候可以,但是大多数时候我都会得到强制转换异常