通过 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();
    }
}
相关推荐
开开心心就好13 小时前
系统管理工具,多功能隐私清理文件粉碎工具
java·网络·windows·r语言·电脑·excel·symfony
广州服务器托管13 小时前
比较优秀的视频音频播放器PotPlayer64-v1.7.22764绿色版
运维·windows·计算机网络·电脑·音视频·可信计算技术
呉師傅16 小时前
国产麒麟系统卡启动项或图标如何解决
运维·网络·windows·计算机外设·电脑
触想工业平板电脑一体机16 小时前
【触想智能】工业触控一体机在船舶海运设备上应用的特点和具体场景分析
android·网络·计算机外设·电脑·智能电视
线束线缆组件品替网1 天前
Amphenol RF 同轴线缆:高频 RF 系统设计中 VSWR 与损耗控制实践
网络·人工智能·电脑·硬件工程·材料工程
TheNextByte12 天前
如何在不使用iTunes的情况下将文件从iPhone传到电脑
电脑·cocoa·iphone
开开心心就好2 天前
音频格式互转工具,支持Mp3ApeWavFlac互转
java·网络·c++·windows·qt·电脑·excel
橙露2 天前
Windows11 触控板异常终极修复指南:从基础排查到深度解决
电脑
独钓寒江雨2 天前
win11在安全模式下删除360tray.exe
windows·电脑
素心如月桠3 天前
如何登录管理全千兆云管理交换机TL-SG2024D
电脑