Java 当其他应用程序播放音乐时,JLayer中的音乐停止

Java 当其他应用程序播放音乐时,JLayer中的音乐停止,java,clojure,jlayer,Java,Clojure,Jlayer,我已经在Clojure中编写了几百行应用程序,它使用JLayer Java库进行音频处理,我在后台运行MP3。这很好,但只要我在后台运行任何其他音乐、YouTube等(我运行的是Arch Linux),我的应用程序中的声音就会完全停止 我已经浪费了过去的两个小时,尝试了几十种方法来解决这个问题,因此任何建议都是值得赞赏的。尽管我个人没有Java声音编码经验,但我的理解是,在Linux声音服务和Java声音接口方面,存在一些不匹配的假设和/或不完整的API。把两者混合在一起,你就会得到你遇到的东西

我已经在Clojure中编写了几百行应用程序,它使用JLayer Java库进行音频处理,我在后台运行MP3。这很好,但只要我在后台运行任何其他音乐、YouTube等(我运行的是Arch Linux),我的应用程序中的声音就会完全停止


我已经浪费了过去的两个小时,尝试了几十种方法来解决这个问题,因此任何建议都是值得赞赏的。

尽管我个人没有Java声音编码经验,但我的理解是,在Linux声音服务和Java声音接口方面,存在一些不匹配的假设和/或不完整的API。把两者混合在一起,你就会得到你遇到的东西。在玩FreeTTS时,我遇到了类似的问题,可能是相同的问题:


既然您声明您使用的是Linux,那么问题可能出在您的ALSA驱动程序上。
检查是否能帮助您解决问题。

我以前在PulseAudio和Jack争夺声卡控制权时遇到过问题


你考虑过吗?你能检查一下这两个应用程序是否以这种方式互相攻击吗?

我的第一个猜测是,如果你的应用程序放在后台,它会暂停,第二个猜测是声音缓冲区只对一个应用程序有效。如果您的应用程序在后台,它还会做其他事情吗?尝试将其写入一个文件,查看该文件是否在应用程序处于后台时仍在增长。你能给我们一个简单的例子,让我们试着复制它并修复它吗?听起来更像是声音驱动程序的问题,而不是Clojure/Java的问题。。。。你最好在Linux专家论坛上提问!感谢回复,这仍然是一个问题,我可以运行来自其他来源的多个声音流,即skype+youtube+mp3,同时工作正常,此外,我可以让我的应用程序在音乐在后台运行时创建图形,这样它就可以在音频打开时运行。。当另一个设备有音频时,它会立即停止,直到复位才会恢复。是的,我同意这可能是音响系统的问题。我最近也曾尝试过类似的设置(Clojure x Java x Arch Linux),但都是从环回接口录制的。注意事项:1)你的应用程序监听/流式输出的声音端口是什么(请参阅javax.sound.sampled.AudioSystem以了解哪些混音器可用等)。如果您有多台混音器,请尝试换成另一台(您可以使用Audacity查看可用的混音器)。2) 检查您的ALSA配置(我必须调整我的配置,并通过.asoundrc配置文件添加一些新的混音器以添加环回接口)。这是从用户而不是程序员的角度来看的。当我直接使用ALSA时,我经常遇到这种问题。你能试试用PulseAudio吗?