通过 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();
    }
}
相关推荐
深圳讯鹏科技17 小时前
三防手持平板如何实现流水线生产全流程质量追溯管理
电脑·三防平板·三防平板电脑·三防加固平板·工业三防平板·三防手持平板
上大科技蔡生19 小时前
IU5925+CS2102 / CS2102 / IU5512:超级电容无线鼠标电源芯片方案
计算机外设·电脑·dcdc·超级电容·ldo·充电ic·无线鼠标电源方案
云飞云共享云桌面1 天前
研发部门使用SolidWorks,三维设计云桌面应该怎么选?
运维·服务器·前端·网络·自动化·电脑
黑科技在线1 天前
电脑不能打字了怎么恢复正常?原因及解决方法指南
电脑·电脑键盘
翼龙云_cloud1 天前
阿里云渠道商:无影云电脑常见问题及其解决方法有哪些?
运维·服务器·阿里云·云计算·电脑
小白电脑技术1 天前
飞牛NAS最近好奇怪啊?一段时间不重启,内存几乎快用完了?
linux·电脑
曾响铃1 天前
一台电脑用10年?易点云在COP30展示“IT高效循环”新方案
电脑·易点云
herinspace1 天前
管家婆软件中如何运用商品副单位
运维·服务器·数据库·windows·电脑
小白电脑技术2 天前
旧电脑安装流畅的系统?用虚拟机先体验一下Linux Mint!
linux·电脑
翼龙云_cloud2 天前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑