【问题标题】:How to programmatically set volume in Windows, Mac and Ubuntu?如何以编程方式在 Windows、Mac 和 Ubuntu 中设置音量?
【发布时间】:2010-12-27 14:30:28
【问题描述】:

我想使用 C/C++ 以编程方式在 Windows、Mac 和 Ubuntu 中设置音量。命令行也可以,但首选 C/C++。提前谢谢!

【问题讨论】:

  • 按音量是指音量吗?
  • 是的。我想设置主音量。
  • 你会得到三个非常不同的答案。我建议您为此提出三个单独的问题。这样,您更有可能得到回答整个问题的答案,而不是您在这里得到的答案,后者只回答了问题的 1/3。
  • 感谢您的建议。实际上只剩下MacOS。我没想到我需要为每个问题提名最佳答案。

标签: c++ windows linux macos


【解决方案1】:

只是一个提示,在 Windows 中,围绕音量调节的“理念”在 XP 和 Vista/7 之间发生了变化。在 XP 上更改主音量的代码只会更改 Vista 和 7 上混音器中应用程序特定的音量设置。

这是 MS 音频开发团队之一的一篇很好的博客文章:Larry Osterman's Blog

以下是一些可能有用的代码项目页面:

For XP

For Vista +

此外,这里还有一些关于新 api 的幻灯片演示: AMP Summit ppts。 Windows Vista 演示文稿中的音频端点有一些很好的信息。

至于 OsX 和 Ubuntu,我不知道。

【讨论】:

    【解决方案2】:

    对于使用 ALSA 声音系统的 Linux,您可以使用以下命令:

    amixer set Master 50%
    

    【讨论】:

    • +1 谢谢!和调整任务栏上的喇叭图标效果一样吗?这个看起来不像 C 系统调用,但还是谢谢。
    • 它是一个shell命令,你可以用system()或者fork()/exec()来执行。是的,它与调整任务栏音量控制的效果相同。
    • 我希望我知道 C/C++ 函数可以做同样的事情。无论如何谢谢:)
    • 那么您应该查看 ALSA 库 (alsa-project.org/alsa-doc/alsa-lib/group___mixer.html),它的文档记录不是很好,或者查看 amixer 源;)
    • 这在 Ubuntu 中不起作用。
    【解决方案3】:

    为了完整起见,这里是 OSX cli 版本:

    osascript -e "set volume output volume (output volume of (get volume settings)+2)"
    

    而在 C 方面则更加困难。从我发现的所有研究中,最简单的方法是使用现成的客观 C 答案之一,并将它们包装到一个函数中,放在一个可以从 C/C++ 调用的额外对象中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多