首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#中播放音频(而不是系统音量)的软件中获取音量级别?

如何在C#中播放音频(而不是系统音量)的软件中获取音量级别?
EN

Stack Overflow用户
提问于 2013-10-20 16:51:57
回答 1查看 1.8K关注 0票数 2

我使用NAudio库在C#中监视计算机中的输入音量(即计算机搅拌器中的音量,而不是系统音量/输出音量):

代码语言:javascript
运行
复制
inputVolume = device.AudioMeterInformation.MasterPeakValue;

现在,输入音量还取决于播放音频的软件/媒体播放器- Windows Media Player、WMP浏览器插件或任何其他软件(如VLC、Winamp、Quciktime等)。

我的问题是,我需要知道用户何时通过播放音频的软件更改输入音量。例如,当用户在软件中提高音量时,它就会增加输入音量--但我不知道这是因为音频流本身“更响亮”,还是因为用户在播放音频的软件中提高了音量。

如果用户只是增加计算机系统的音量,它不会影响任何东西,因为它是输出音量,我并不关心它。

音频不是来自用户计算机上的文件,而是来自通过互联网的实况流(它仍然可以在安装在计算机上的音频应用程序上播放,而不仅仅是在浏览器中)。

可以在播放音频的软件中获得音量级别吗?它通常是Windows Media Player浏览器插件,但也可以是不同的软件。

如果不可能,有什么解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-20 17:02:31

代码语言:javascript
运行
复制
var player = new WaveOut();
var file = new AudioFileReader(@"test.mp3");
var meter = new MeteringSampleProvider(file);
meter.StreamVolume += (s,e) => Console.WriteLine("{0} - {1}", e.MaxSampleValues[0],e.MaxSampleValues[1]);
player.Init(new SampleToWaveProvider(meter));

var form = new Form();
form.Load += (s,e) => player.Play();
form.FormClosed += (s,e) => player.Dispose();
form.ShowDialog();

一些有用的链接

SO Question

So Question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19475553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档