在 C# 中确定何时播放响亮的声音

Posted

技术标签:

【中文标题】在 C# 中确定何时播放响亮的声音【英文标题】:Determine when a loud sound is played in C# 【发布时间】:2010-05-17 12:51:41 【问题描述】:

我想确定是否有其他程序播放超过某个阈值的声音。我不是在寻找检查计算机上的音量设置或类似的东西。我真的只需要看看是否有任何应用程序播放的内容高于我的预期。任何人都知道这是否可能或如何做到?

【问题讨论】:

我的第一反应是 .Net 没有“开箱即用”的方法。可能需要对声音硬件进行较低级别的访问。即使那样,我认为您也无法播放实际的物理音量,因为这可以从计算机外部控制(使用音量旋钮)。 :) 我认为执行此操作的程序必须深入挖掘系统基础架构,例如靠近声卡驱动程序。也许 DirectX 允许你去那里...... 【参考方案1】:

在 codeproject 上查看 this 项目。它是一个使用托管 DirectX 并完全用 C# 编写的音量计。

【讨论】:

【参考方案2】:

本地计算机上有许多可能的声音来源,最终这些声音将通过 Windows 声音系统向下传递到混音器并通过声卡输出。我所知道的在 Windows 系统上监视所有声音的唯一方法是使用设备驱动程序开发工具包编写过滤器驱动程序。这将拦截对声音系统的所有请求,遍历正在发送以供播放的数据,并且可以在发现较大差异时设置标志/写入日志(其中 abs(data[x+1] - data[x])是一个很大的值)。

驱动程序开发通常用 C 语言完成。如果你想走这条路,网上有一堆示例代码。

【讨论】:

【参考方案3】:

This looks like a good place to start your investigation. 不过,我认为您不会在 .Net 中找到您想要的内容。

【讨论】:

以上是关于在 C# 中确定何时播放响亮的声音的主要内容,如果未能解决你的问题,请参考以下文章

相同的声音重叠使其非常响亮。提示与技巧?

UILocalNotification 中的声音在最大音量下比 AVAudioPlayer 响亮

如何检测声音文件何时完成?

您如何检测声音文件何时完成?

如何使用Naudio c#使声音更响亮?

如何在 iPhone 应用程序中录制和播放声音?