通过 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();
    }
}
相关推荐
一个人旅程~1 小时前
Win旧版或win10部分版本如何解除260字符长路径名限制?
linux·windows·经验分享·电脑
海雅达手持终端PDA2 小时前
海雅达Model 10X:WiFi 6E 2×2 MIMO工业三防平板在生产制造和仓储管理中的应用优势
物联网·电脑·能源·制造·零售·交通物流·平板
不做无法实现的梦~3 小时前
PX4 + Pixhawk 6C Mini 配置飞行、机载电脑、仿真与实战详细教程
电脑
2601_949695591 天前
开源AI智能体OpenClaw接入DeepSeek V4全流程:从配置到成本
人工智能·驱动开发·ai·电脑
xixixi777772 天前
全模态原生大脑降临:GPT-5.5(Spud)发布,推理/编码提升30%,百万上下文+原生电脑控制,开启Agent新纪元
大数据·网络·人工智能·gpt·安全·电脑·量子计算
天下财经热2 天前
2026跨平台App开发工具横评小程序转App与集成方案
电脑
驱动小百科2 天前
电脑耳机插上没有声音怎么回事 原因及解决方法
电脑·电脑耳机没声音·耳机插上没反应·耳机不出声·电脑无声音怎么办
小白电脑技术2 天前
OpenClaw的API密钥存在电脑里,远程调用安全吗?
安全·电脑·openclaw
开开心心就好2 天前
支持批量处理的视频分割工具推荐
安全·智能手机·rust·pdf·电脑·1024程序员节·lavarel
JoyCong19982 天前
开启iPad创造力!装上它平板能当电脑用
ios·电脑·ipad