c# - 如何以编程方式获取当前音频电平?

标签 c# c++ windows winapi

基本上,我需要的是一种利用当前音频输出并检查声音级别的方法,即我需要能够检查音频设备上是否正在播放某些东西。

我不需要检查音量设置,而是实际播放音频流的音量。

抱歉,我问的是如何在 Windows 中的 Visual Studio 2008 上进行操作。

@mikerobi:这是我推理的一部分——如果它显示在系统音量计上,则必须有一个系统调用可以将其取回

最佳答案

这是一个有用的 Windows API 调用链接,这正是您要查找的内容:

http://www.pinvoke.net/default.aspx/winmm.waveOutGetVolume


由于要求发生了变化并且您不需要音频级别,我建议以下可能会有所帮助:

我认为您需要读取输出流上正在播放的内容,并通过分析某些算法中的数据,您可能能够确定是否正在播放某些内容。为此,您需要 MMDevice API

http://msdn.microsoft.com/en-us/library/dd316556(v=VS.85).aspx

我不想让您失望,但请相信我,如果您不熟悉非托管代码,这将不是一件容易的事。

  • 您必须在每次调用中填写许多结构。
  • 您必须按特定顺序执行调用。
  • 编码对结构的引用。

即使你做到了,你也无法预测设备的结果行为。 祝你好运。

关于c# - 如何以编程方式获取当前音频电平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992798/

相关文章:

windows - 如何使用 Java 或 C++ 获取文件 MFT 条目/inode

C# 控制台通过管道接收输入

C++ LoadLibrary ERROR_NOACCESS "Invalid access to memory location."

c++ - setImageROI 使用 MAT 图像而不是 Iplimage

C++ Ubuntu。使用 FFMPEG 库编译的多个 undefined reference

windows - 是否可以在 Windows 上打开 'local machine only' 套接字?

windows - UDP丢包

c# - 避免在 ASP.NET MVC 5 应用程序的 Action 上使用 OnResultExecuted Filter

c# - 计算 XML 元素中属性的数量

c# - ShowDialog 退出时如何防止焦点改变?