通过 NAudio 控制电脑操作系统音量

根据您的需求,以下是通过 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();
    }
}
相关推荐
可爱系程序猿5 小时前
模型推理任务弹出找不到 cublas64_12.dll,CUDA 12 矩阵计算库按安装包核对
程序人生·线性代数·矩阵·电脑
云飞云共享云桌面7 小时前
设计师共享单台图形服务器,解决 SolidWorks大装配卡顿难题
运维·服务器·3d·自动化·电脑·制造
每天get到一点新知识8 小时前
7款电脑数据恢复软件集合!恢复硬盘数据,其实很简单!
经验分享·电脑·数据恢复·电脑知识·电脑小技巧
TST-魚爷8 小时前
易视讯会议摄像头 + 全向麦克风实操讲解稿
android·电脑·钉钉·腾讯会议·zoom会议
2601_9623649711 小时前
升级电脑人脸登录,选购 Windows Hello 模组常见误区
windows·安全·电脑
涵美女程序猿12 小时前
ChatCut online 剪微服务熔断测试录屏:仪表盘告警、降级日志与恢复时刻怎样对应
程序人生·微服务·云原生·架构·电脑
科技象限16 小时前
电脑防拍照系统:屏幕被手机拍走,还能追得回来吗
运维·网络安全·电脑·安企神
Dovis(誓平步青云)18 小时前
车辆进入隧道后信号断开,座舱旅程怎样补回事件
java·开发语言·前端·数据库·电脑
朝阳5811 天前
LFM2.5-24B-A2B:一个把 Agent 塞回你笔记本电脑的模型
语言模型·电脑