c# - 如何在 C# 中获取播放音频(不是系统音量)的软件中的音量?

标签 c# audio media-player volume naudio

我使用 NAudio 在 C# 中监控计算机中的输入音量(即计算机混音器中的音量,而不是系统音量/输出音量)图书馆:

inputVolume = device.AudioMeterInformation.MasterPeakValue;

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

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

如果用户只是把电脑系统音量调大一点,影响不大,因为那是输出音量,我不关心。

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

是否可以在播放音频的软件中获取音量?它通常是 Windows Media Player 浏览器插件,但也可以是其他软件。
如果不可能,是否有任何解决方法?

最佳答案

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

关于c# - 如何在 C# 中获取播放音频(不是系统音量)的软件中的音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19475553/

相关文章:

iphone MPMoviePlayerViewController 处理网络问题(黑屏)

c# - 任务栏精简模式?

c# - DotNetZip 取消任务中的提取

c# - 如何在 WPF 中禁用调整 UserControl 的大小

c# - 这个变量从哪里来? MVVMcross UWP框架示例

android 在应用程序/Activity 中嵌入默认音频播放器

android - onDestroy 媒体播放器释放

c# - SortedList 中值的总和和键的条件

arrays - LabVIEW fpga中的LMS实现(高吞吐量个性)

php - sh :/usr/bin/ffmpeg: not found