有没有办法在Linux上用Java合作播放WAV文件?

时间:2011-12-03 19:28:23

标签: java audio wav playback

到目前为止,我只找到了两种方法:

  1. 抛出异常
  2. 什么都不玩
  3. ad.2。最近的代码(2010年)

    但什么也没做,根本没有声音。

    ad.1。例如:

    我得到的只是异常“音频设备不可用”。正如本文(2008) - lsof |grep snd — how to free a linux sound device - 解释Java必须获得对音频设备的独占访问权。

    但是我承受不起这样的条件。我使用声音来通知自己长时间运行的过程(几个小时),我无法摆脱所有声音(包括那些强制通过Flash广告)只是为了让Java舒适。

    所以现在我使用极端 - 我只是启动外部程序:https://stackoverflow.com/a/8370223/210342。这很丑陋,因为刚启动的新程序只是为了发出通知。

    问题

    目前有办法播放WAV文件:

    • 在Linux上,
    • 以合作的方式(在Java播放期间可能还会播放其他音频),
    • 发出声音的
    • Java中的
    • (没有启动外部程序)?
      

    Java 1.6,openSUSE 11.4

4 个答案:

答案 0 :(得分:2)

您是否尝试过Java Media Framework (JMF)

  

Java Media Framework API(JMF)支持音频,视频和其他功能   基于时间的媒体将添加到基于Java构建的应用程序和applet   技术。这个可选包,可以捕捉,播放,   流,并转码多种媒体格式,扩展了Java 2   适用于多媒体开发人员的平台,标准版(J2SE)   提供强大的工具包来开发可扩展的跨平台   技术

答案 1 :(得分:0)

此站点提供了一个简单的swing应用程序来捕获和播放wav文件 http://www.java-tips.org/java-se-tips/javax.sound/capturing-audio-with-java-sound-api.html 您可以修改和使用以下站点中的代码 http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml

你不能在需要播放动作时简单地创建一个新线程。因此无论背景过程如何,播放都会继续进行

答案 2 :(得分:0)

所以,多亏了AT的回答,我从JMF转到JMF问题,这导致我进入了VLC-J。这就是答案 - 为了在Java程序中使用多媒体,根本不使用Java(可惜,顺便说一下,2012年的Java没有可靠的多媒体层,哎。)。

标记为已解决,因为VLC-J允许我毫无问题地播放音频。

主要项目地点: http://code.google.com/p/vlcj/

最小播放程序: http://code.google.com/p/vlcj/source/browse/trunk/vlcj/src/test/java/uk/co/caprica/vlcj/test/minimalmp3/Mp3Test.java

答案 3 :(得分:-1)

Java在1.4+版本中内置了这种支持(在javax.sound,javax.sound.sampled包中提供)。它与系统上的其他应用程序协同工作,因为它使用平台混合器(ALSA或PULSE)