将音频直接发送到扬声器的java

时间:2013-07-17 22:46:01

标签: java audio byte bufferedoutputstream

标题基本上讲述了我的故事,我想通过java程序将音频直接发送到扬声器系统,我正在考虑使用从音频文件中获取的字节直接写入/ dev / in linux中的扬声器,我不确定会工作,但在Windows中,我是无法忍受的。我正在思考这样的事情:

public void play(byte[] audio){
   if(OS.isWindows){//This is where i have no idea, maybe write to javasound with jmf?
}
if(OS.isLinux){
    BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("/dev/blahblah");
    bout.write(audio)
    bout.flush();
    bout.close();
 }

我的代码对我来说似乎很简单,而不是我想要复杂的代码,但我想要工作代码。我实际上没有尝试上面的代码,担心我不知道我在做什么,可能会伤害或打断我的电脑中的东西。

1 个答案:

答案 0 :(得分:0)

你不能再cat tune.wav > /dev/dsp了(不是没有some tricks),以及你尝试听起来级别太低的方式 - 所以选择一个库。

您可能会对标准版有好运,例如javax.sound(简单)和JMF(更多功能)。

或者您可以尝试第三方库,例如Jogamp JOAL(功能丰富),您可以将其用于Windows和Linux(通过本机库)。

编辑:适用于MP3

  1. 刚刚注意到Java 7的javafx您可以轻松完成,请参阅this answer

  2. 使用javax.sound滚动自己:按照本教程创建SPI *来创建AudioFileReader处理MP3。 (注意以前的SPI链接是javax.sound特定的,但是SPI is a general concept

  3. 或者JMF可以处理mp3 with this,如果您决定提供单个工件,您可以查找如何嵌套jar等。