0

サーバー上の入力からサウンドを録音する 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 ユーザーを audio グループに追加しようとしましたが (一部のドキュメントで推奨されています)、まだ例外がスローされています。唯一の違いは環境だと思いますが、どこに問題があるのか​​途方に暮れています。

4

2 に答える 2

0

アプリケーションの WEB-INF/lib または Tomcat /lib のいずれかに、適切な JAR が CLASSPATH にあると想定しています。

何かを開こうとしているという事実は、おそらくパスに問題があることを示唆しています。Web アプリは、WAR ファイルがインストールされる場所を認識できないため、絶対ファイル パスに依存できません。そのため、相対パスを使用してリソースをストリームとして取得することをお勧めします。おそらく、このライブラリでそれを行う方法があります。

于 2011-08-12T20:40:23.003 に答える
0

私はこれを機能させることができましたが、助けてくれてありがとう。

最終的にはOSレベルの問題でした。ubuntuでは、ログインしていないときにオーディオグルー​​プのユーザーのみがサウンドリソースにアクセスでき(https://wiki.ubuntu.com/Audio/TheAudioGroup)、パルスオーディオに接続するには次のようになります何らかのX11認証が必要です。これらの変更の後、再起動が必要になるため、Tomcat は他の処理を行う前にサウンド デバイスを取得できます。

于 2011-08-13T09:27:56.167 に答える