直接向扬声器发送音频java



标题基本上告诉了我的故事,我想从java程序直接将音频发送到扬声器系统,我想尝试使用从音频文件中获得的字节在linux中的/dev/中直接写入扬声器,我不确定这是否可行,但在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();
 }

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

你不能再只使用cat tune.wav > /dev/dsp了(并非没有一些技巧),而且你尝试这个的方式听起来太低了,所以选择一个库。

您可能会对javax.sound(简单)和JMF(更多特性)等标准特性感到幸运。

或者,您可以尝试第三方库,如JogampJOAL(功能丰富),您可以将其与Windows和Linux一起使用(通过本地库)。

编辑:适用于MP3

  1. 刚刚注意到使用Java7的javafx可以很容易地完成,请参阅以下答案

  2. 要使用javax.sound进行自己的滚动:请按照本教程为SPI*创建,以创建一个处理MP3的AudioFileReader。(注意,前面的SPI链接是特定于javax.sound的,但SPI是一个通用概念

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

最新更新