我正在尝试编写一个Java EE应用程序,该应用程序记录来自服务器输入的声音。我的代码在调试时可以正常运行,并且可以自己在服务器上运行(都是ubuntu),但是从Web服务器运行时,却出现异常:
javax.sound.sampled.LineUnavailableException at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openImpl(PulseAudioMixer.java:714) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:588) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:584) at org.classpath.icedtea.pulseaudio.PulseAudioMixer.open(PulseAudioMixer.java:579) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:95) at org.classpath.icedtea.pulseaudio.PulseAudioTargetDataLine.open(PulseAudioTargetDataLine.java:111) at org.classpath.icedtea.pulseaudio.PulseAudioTargetDataLine.open(PulseAudioTargetDataLine.java:130)
我试图将tomcat用户添加到音频组(某些文档建议),但仍会引发异常。我认为唯一的区别一定是环境,但是我对可能出现问题的地方不知所措。
我现在设法使它正常工作-但感谢您的帮助。
最后,这是一个操作系统级别的问题,在ubuntu下,只有音频组中的用户才能在未登录时访问声音资源(https://wiki.ubuntu.com/Audio/TheAudioGroup)并连接到脉冲音频,就像您需要某种X11身份验证。进行这些更改后,需要重新启动,以便Tomcat可以先捕获声音设备,然后再进行其他操作。