2013-08-06 38 views
8

我正在寻找一种方式来使用JavaFX了JavaFx音频输出选择

指定输出设备我有一个类似的问题,因为这个问题:JavaFX specific Audio Output,但有不同的需求。

我需要一种方法来得到所有可能的音频输出设备的列表(如你在你的用户首选项中看到的),并允许用户选择他们想要的音频JavaFX中走出来的是哪一个。这看起来应该是任何音乐/媒体API中的一项基本功能,并且对于大多数音频软件来说都是必不可少的。

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

如果有什么东西在JavaFX 8,将帮助,我可以随时等待直到它被释放。

我真的希望那里是是同样的事情Screens类:

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

我很好的hackish的解决方案。真的,任何有效的东西。

+0

你看'javax.sound.sampled.AudioSystem.getMixerInfo()'列出音频系统? – assylias

+0

@assylias我希望不要使用Java声音,因为这将是非常复杂的视频 –

+2

实施如果您没有收到任何答案,得到的答案的方法是问关于JavaFX的邮件之一列出或创建新的Jira问题。 – assylias

回答

1

多年来,它一直是Java实现的OS X的一个非常不幸的限制,是特别针对该平台顺便说一句,说:“Java声音音频引擎”是唯一可用的编程输出音频线。结果,不管你发送给此行,即出从任何Java应用程序,你做,总是会被路由到什么已经被设置为在OS X中的默认输出,通常内置扬声器。所以JSAE只是用于“默认音频输出”的Java术语。根据我们的理解 - 可悲的是 - 最新版本仍然如此。

为什么不幸?因为它甚至可以有效地禁用谦逊的音频路由。我们每天都在处理这些问题,并要求增加各种复杂性。有解决方法,但通过第三方应用程序SoundFlower和HiJack Pro。例如www.soundPimp.com。

+0

有没有关于如何实现其中一种解决方法的教程或任何内容? –

1

由于assylias指出getmixerinfo方法可以帮助你

 Info[] mixerInfo = AudioSystem.getMixerInfo(); 

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

您可以探索进一步的细节here

+0

有没有什么办法可以让JavaFx发挥出色? –