【问题标题】:Setting volume with java用java设置音量
【发布时间】:2013-01-02 16:25:14
【问题描述】:

美好的一天!

我正在开发一个播放 MIDI 的应用程序。它播放良好,但我经常收到准错误报告:“没有声音播放”。答案总是,进入音量控制器并打开合成器声音(使其不静音)。

问题是 - 如何通过软件自动更改它?到目前为止,我只能更改主音量,而且我真的无法找到如何仅更改“wave”、“SW 合成器”等...

我通常在寻找独立于平台的解决方案(纯 java),但也欢迎仅适用于 Windows(各种 Windows)的解决方案;)谢谢!

编辑:好吧,看看答案,我明白了,我应该更好地说明我的问题。我附加图像。用绿色选择的控件是我已经可以做的(即作为 Cliff 链接)但是我需要一些红色的控件(在我的情况下最重要的是左起第三个 - 合成器音量)。图片取自 win XP,但其他操作系统(Linux 也有)也有类似的控件。 Java必须有这样的可能性。

【问题讨论】:

标签: java audio volume


【解决方案1】:

我查看了 Ubuntu、Fedora 和 Windows,这些操作系统的唯一共同点是主音量和警报(或 Windows 上的“哔”声)音量。这让我相信没有独立于平台的方式来做这件事,这意味着没有标准的 Java 方式。

话虽如此,所有这些操作系统很可能都有 API(可能不同),可让您控制这些更细粒度的设置。如果是这样,几乎肯定需要单独的 Java 库来与每个平台上的这些 API 进行交互。

抱歉,我无法为您指明正确的方向,但我希望至少可以帮助您消除使用标准化方式执行此功能的可能性。祝你好运!

【讨论】:

  • 就是说的信息,但是很有价值。谢谢你的工作!
【解决方案2】:

尝试使用 sysinternal 的 Process Monitor 使用屏幕截图中的工具调整波形/合成器级别时在后台发生的情况,然后让您的 java 代码执行相同的本机系统/dll 调用。

【讨论】:

    【解决方案3】:

    您是在使用某种界面还是使用系统默认的Mixer?你在说什么级别的控制?不幸的是,我也在学习这个 API,但我的第一个想法是每一个都是不同的,对吧?您是否尝试过获取所有系统线路并在每条线路上使用MASTER_GAIN?就像我上面的人说的那样,我确信有 API 可以解决这个问题,但如果我打算在我自己的代码中出于教育目的或其他目的来做这件事,那么我会从这里开始。说到 API,有一个控制 API 可以自己操作音频数据,但据我所知不会影响硬件的音量控制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多