java - 如何获得默认音频输出

标签 java audio

我正在编写一个Java程序。这将是一场比赛,我还不确定细节,但是会涉及声音。我想知道java中是否可以找到默认的系统音频输出设备。我知道如何根据规格查找设备,但我想知道是否有一种方法可以访问用户已设置为默认值的输出,因为这实际上与他们的规格无关,但我不希望它们如果我不能避免必须选择输出,并且我不知道哪些设备可以工作或想要什么设备。如果我可以访问默认音频,则可以绕过整个过程。我发现了另一个问题,它在堆栈溢出时询问类似的内容,但是他们不需要一行,只需访问计算机发出的任何声音即可。无论如何,它没有任何好的答案。我还没有找到与此主题相关的其他信息。

EDT:我找到了可能的解决方案,并将其发布在下面。但是,它使用Midi音频代替
样本音频,如果可能的话,我希望使用样本音频的解决方案。

最佳答案

我找到了答案。我之前没有找到它,因为它确实在“访问音频系统资源”路径中。在涉及排队的其他所有事情之后,它来了。这是节选:

“获取默认设备

使用Java Sound API的典型MIDI应用程序首先获取所需的设备,这些设备可以包含一个或多个音序器,合成器,输入端口或输出端口。

有默认的合成器设备,默认的音序器设备,默认的发送设备和默认的接收设备。如果系统上有可用的设备,则后两个设备通常分别代表MIDI输入和输出端口。 (这里容易混淆方向性。考虑与软件有关的端口发送或接收,而不是与连接到物理端口的任何外部物理设备有关的端口。MIDI输入端口将数据从外部设备传输到Java声音API接收器,以及类似的MIDI输出端口从软件对象接收数据并将数据中继到外部设备。)

一个简单的应用程序可能只使用默认值,而不用浏览所有已安装的设备。 MidiSystem类包含以下用于检索默认资源的方法:

static Sequencer getSequencer()
static Synthesizer getSynthesizer()
static Receiver getReceiver()
static Transmitter getTransmitter()

这些方法中的前两种获得系统的默认排序和综合资源,这些资源代表物理设备或全部用软件实现。 getReceiver方法获得一个Receiver对象,该对象接收发送给它的MIDI消息并将其中继到默认的接收设备。同样,getTransmitter方法获得一个Transmitter对象,该对象可以代表默认的传输设备将MIDI消息发送到某些接收器。”

所以基本上你会用
MidiSystem.getTransmitter();

获取默认输出并
MidiSystem.getReceiver();

获取默认输入。

关于java - 如何获得默认音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131672/

相关文章:

c# - 在特定时间后如何使两张图片不可见

flash - 如何在AS2中无延迟地转移音轨

java - 用Java获取 'external' IP地址

java - 如何从 .jar 文件中提取类?

java.lang.StackOverflowError : null for the jpa saveAll

java - 在 BTrace 中将 char[] 转换为 String

java - listFiles - c 驱动器的 NullPointerException

audio - JavaFX MediaPlayer播放带有小介绍音乐的背景音乐循环

Android:从 DataInputStream 读取在模拟器中有效,但在设备上无效

python - blender 比例值未更新