8

我正在寻找一种使用 JavaFx 指定输出设备的方法

我有一个与这个问题类似的问题:JavaFX specific Audio Output,但有不同的需求。

我需要一种方法来获取所有可能的音频输出设备的列表(例如您在用户首选项中看到的设备),并允许用户选择他们希望在 JavaFx 中输出音频的设备。这似乎是任何音乐/媒体 API 中应该包含的一个非常基本的功能,并且对于大多数音频软件来说都是必不可少的。

我在 JavaFx 中使用MediaPlayer,但如果有另一个类我很乐意使用它。请注意,虽然我需要相同的视频功能(指定音频输出),所以我需要一个适用于两者的类/解决方案。

如果 JavaFx 8 中的某些东西会有所帮助,我可以一直等到它发布。

我真正期望的与Screens类相同:

Screen.getScreens() // Gets an observable list of all screens.

我对骇人听闻的解决方案很好。真的,任何有效的东西。

4

2 回答 2

1

多年来,对于 OS X 的 Java 实现来说,这是一个非常不幸的限制,顺便说一句,该平台特别适用于“Java Sound Audio Engine”,它是唯一以编程方式可用的输出音频线。因此,无论您发送到该行的什么,即从您创建的任何 java 应用程序中发出,都将始终路由到 OS X 中设置为默认输出的内容,通常是内部扬声器。所以 JSAE 只是“默认音频输出”的 Java 术语。据我们了解 - 遗憾的是 - 最新版本仍然是这种情况。

为什么不幸?因为它有效地禁用了即使是不起眼的音频路由。我们每天都在处理这些问题,这需要增加各种复杂性。有一些变通方法,但通过第三方应用程序,如 SoundFlower 和 HiJack Pro。例如 www.soundPimp.com。

于 2013-08-15T14:30:53.677 回答
1

assylias 指出 getmixerinfo 方法可以帮助您

        Info[] mixerInfo =  AudioSystem.getMixerInfo();

    for(int i = 0; i < mixerInfo.length; i++)
    {
         System.out.println(mixerInfo[i].getName());
    }

您可以在此处探索更多详细信息

于 2013-08-15T20:30:28.120 回答