C# Winform 通过 NAudio 获取控制电脑操作系统音量

https://github.com/naudio/NAudio
NAudio 是一个开源的 .NET 音频库,由 Mark Heath 开发,开源地址:https://github.com/naudio/NAudio 支持多种音频操作,可实现多种API播放与录制、多种不同音频格式、音频格式转换(重采样、位深、声道等)、音频编码、多通道播放、音频效果处理等等。

比如,把系统禁音了,系统预警声音发不出,这时候通过 NAudio 可以控制,将声音启用,而且可以调整音量的大小,这样,软件的预警就不受人为改变系统音量而受影响

NAudio安装

注意程序的版本号

手动安装

我的程序是 .Net Framework 4.6 的,NuGET 没安装成功。所以下了 NAudio-
1.10.0 的代码进行了编辑:DLL 下载地址:https://files.cnblogs.com/files/vipsoft/NAudio-1.10.0.zip?t=1737014955&download=true

Nuget安装

image

常用类:

  • WaveIn 表示波形输入, 继承了 IWaveIn, 例如麦克风输入, 或者计算机正在播放的音频流。
  • WaveOut 表示波形输出, 继承了 IWavePlayer, 用来播放音频, 以 IWaveProvider 作为播放源播放音频, 通过拓展方法也支持以 - ISampleProvider 作为播放源播放音频。
  • WaveStream 表示波形流, 它继承了 IWaveProvider, 可以用来作为播放源。
  • WaveFileReader 继承了 WaveStream, 用来读取波形文件。
  • WaveFileWriter 继承了Stream, 用来写入文件, 常用于保存音频录制的数据。
  • AudioFileReader 通用的音频文件读取器, 可以读取波形文件, 也可以读取其他类型的音频文件例如 Aiff, MP3

常用接口:

  • IWaveProvider 波形提供者, 上面已经提到, 是音频播放的提供者, 通过拓展方法可以转换为 ISampleProvider。
  • ISampleProvider 采样提供者, 上面已经提到, 通过拓展方法可以作为 WaveOut 的播放源。

代码示例

获取系统是否禁音、当前的系统音量、设置新的音量

using NAudio.CoreAudioApi;

private void CheckSystemMuteState()
{
    using (var enumerator = new MMDeviceEnumerator())
    {
        using (var device = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console))
        {
            var audioEndpointVolume = device.AudioEndpointVolume;
            // 获取当前主音量级别(范围0.0到1.0)
            float masterVolumeLevel = audioEndpointVolume.MasterVolumeLevelScalar;
            bool isMuted = audioEndpointVolume.Mute;
            string msg=$"系统音频是否静音: {isMuted} 当前系统音量{(masterVolumeLevel * 100).ToString("F2")}%";
            MessageBox.Show(msg);

            //设置音量为 60%
            float newVolumeLevel = 0.6f;
            audioEndpointVolume.MasterVolumeLevelScalar = newVolumeLevel;
            string msg= = $"系统音频是否静音: {isMuted} 当前系统音量{(masterVolumeLevel * 100).ToString("F2")}%";
            MessageBox.Show(msg);
        }
    }
}

C# Winform 当音频播放完成后,播放下一个音频,怎么知道音频有没有播放完成

posted @   VipSoft  阅读(434)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
历史上的今天:
2024-01-17 HanLP — HMM隐马尔可夫模型 -- 维特比(Viterbi)算法 --示例代码 - Python
2024-01-17 Python pickle 二进制序列化和反序列化 - 数据持久化
2023-01-17 Axure 绘制表格添加删除
2023-01-17 Axure 二维码扫码
点击右上角即可分享
微信分享提示