根据您的需求,以下是通过 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 传递给 WaveOut
waveOut.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();
}
}