根据您的需求,以下是通过 NAudio
获取和控制电脑操作系统音量的方法:
一、获取和控制系统音量
(一)获取系统音量和静音状态
您可以使用 NAudio.CoreAudioApi.MMDeviceEnumerator
来获取系统默认音频设备的音量和静音状态:
csharp复制
using NAudio.CoreAudioApi;public void GetSystemVolume()
{using (var enumerator = new MMDeviceEnumerator()){using (var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console)){var audioEndpointVolume = device.AudioEndpointVolume;float masterVolumeLevel = audioEndpointVolume.MasterVolumeLevelScalar; // 获取主音量(范围0.0到1.0)bool isMuted = audioEndpointVolume.Mute; // 获取是否静音Console.WriteLine($"系统音量: {masterVolumeLevel * 100}%, 是否静音: {isMuted}");}}
}
(二)设置系统音量
同样使用 MMDeviceEnumerator
,您可以设置系统音量:
csharp复制
public void SetSystemVolume(float volumeLevel)
{using (var enumerator = new MMDeviceEnumerator()){using (var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console)){device.AudioEndpointVolume.MasterVolumeLevelScalar = volumeLevel; // 设置音量(范围0.0到1.0)}}
}
(三)示例:将音量设置为60%
csharp复制
SetSystemVolume(0.6f); // 设置音量为60%
二、获取和控制麦克风音量
(一)获取麦克风音量
使用 MMDeviceEnumerator
获取默认麦克风设备的音量:
csharp复制
public int GetCurrentMicVolume()
{int volume = 0;var enumerator = new MMDeviceEnumerator();var captureDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToArray();if (captureDevices.Length > 0){var mMDevice = captureDevices[0];volume = (int)(mMDevice.AudioEndpointVolume.MasterVolumeLevelScalar * 100);}return volume;
}
(二)设置麦克风音量
设置默认麦克风设备的音量:
csharp复制
public void SetCurrentMicVolume(int volume)
{var enumerator = new MMDeviceEnumerator();var captureDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).ToArray();if (captureDevices.Length > 0){var mMDevice = captureDevices[0];mMDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volume / 100.0f;}
}
三、NAudio更改wav资源的音量
要使用 NAudio
修改 WAV 文件的音量,可以通过以下步骤实现。以下是一个完整的示例,展示如何在播放时调整 WAV 文件的音量。
1. 引入 NAudio 库
首先,确保你的项目中已经安装了 NAudio
库。可以通过 NuGet 包管理器安装:
bash复制
Install-Package NAudio
2. 使用 SampleChannel
调整音量
NAudio
提供了 SampleChannel
类,可以用来调整音频流的音量。以下是一个示例代码,展示如何在播放时调整音量:
csharp复制
using System;
using NAudio.Wave;public class AudioPlayer
{private IWavePlayer waveOut;private WaveStream waveStream;public void Play(string filePath, float volume){// 创建 WaveOutEvent 实例waveOut = new WaveOutEvent();// 打开 WAV 文件waveStream = new WaveFileReader(filePath);// 创建 SampleChannel 用于调整音量var sampleChannel = new SampleChannel(waveStream);sampleChannel.Volume = volume; // 设置音量(范围 0.0 到 1.0)// 将 SampleChannel 传递给 WaveOutwaveOut.Init(sampleChannel);waveOut.Play();}public void Stop(){// 停止播放waveOut?.Stop();waveOut?.Dispose();waveStream?.Dispose();}
}
3. 使用示例
以下是如何使用上述 AudioPlayer
类来播放 WAV 文件并调整音量的示例:
csharp复制
public class Program
{public static void Main(){var player = new AudioPlayer();// 播放 WAV 文件并设置音量为 0.5(50%)player.Play("path/to/your/file.wav", 0.5f);// 播放完成后停止播放Console.WriteLine("Press any key to stop playback...");Console.ReadKey();player.Stop();}
}