通过 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();
    }
}
相关推荐
开开心心就好2 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
呉師傅3 小时前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
一个人旅程~7 小时前
Dell n4020双系统分区步骤和linux优化操作
linux·windows·电脑
TheNextByte11 天前
如何在PC和Android平板之间传输文件
android·gitee·电脑
一个人旅程~1 天前
电脑启动分区表MBR到GPT以及BIOS到UEFI如何区分操作?
linux·windows·电脑
阿福赚美刀2 天前
跨境电商公司如何高效培养新人:实战经验分享
职场和发展·电脑
眼镜哥(with glasses)2 天前
拯救者重装系统后联想电脑管家显示驱动没问题,但windows11用起来卡卡的,CPU全核频率跑不高,是谁的问题?——解决过程1月30号
电脑
集芯微电科技有限公司2 天前
15V/2A同步开关型降压单节/双节锂电池充电管理IC支持输入适配器 DPM 功能
c语言·开发语言·stm32·单片机·嵌入式硬件·电脑
软件资深者2 天前
游戏组件DirectX修复工具(DirectX Repair)v4.4增强版
windows·游戏·电脑·系统修复
黄美美分享2 天前
【免费开源】多平台直播录制软件!支持 40 + 平台直播录制,附软件下载!
windows·自动化·电脑·开源软件