【问题标题】:Sending audio dircetly to the speakers java将音频直接发送到扬声器 java
【发布时间】:2013-07-17 22:46:01
【问题描述】:

标题基本上讲述了我的故事,我想从 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();
 }

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

【问题讨论】:

    标签: java audio byte bufferedoutputstream


    【解决方案1】:

    你不能再只是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* 创建一个处理 MP3 的 AudioFileReader。 (注意之前的 SPI 链接是 javax.sound 特定的,但 SPI is a general concept

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

    【讨论】:

    • javax.sound 的唯一问题是不支持 mp3。我通过一些复杂的程序知道您可以解码 mp3,但我不知道该怎么做。如果你能给我一段 javax.sound 的示例代码,只是关于如何解码 mp3,我很乐意使用包含的声音库
    • 啊,谢谢,这应该很好用!只有一个问题,使用 javafx,我是否需要在编译期间将 jar 与我的 jar 一起嵌套,以便在用户之间轻松传输?
    • 对不起,刚刚看到 JavaFX 包含在 Java7 中,忽略我之前的评论。 -_-
    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 2011-04-01
    • 1970-01-01
    • 2015-11-27
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多