2012-03-24 14 views
1

GlassFishでJavaクラスを通してwavファイルを再生するjspがあります。私はSourceDataLineの方法を使用していますサウンド出力バッファーフラッシュ

start(); 
drain(); 
close(); 

wavファイルが正しく再生されます。停止するために私は使用した:

しかし、出力バッファ内の残りのデータで再生が続きます。私はSourceDatalineの方法についてwww.oracle.comの文書を調べました。そこでは、flush()はSourceDatalineオブジェクト内のデータを破棄しますが、出力バッファ内のデータは破棄しません。

出力バッファからデータをフラッシュして、次回の起動時にサウンドが重ならないようにします。 JavaScriptを使用して検索しましたが、ヘルプは必要ありません。

+0

ちょっと不思議なことに、JavaScriptはこれと何が関係していますか? –

+0

* "私はwavファイルを再生するjspを持っています" *どこですか?サーバー上で(どこにシステムオペレータを怒らせることができる?)クライアント上で(アプレットが必要な場所)? –

答えて

0

これは主に暗闇の中でのショットですが、仕事ができる:TargetDataLine.readのドキュメントは言う:

は、データラインの入力バッファからオーディオデータを読み込みます。 (...)しかし、要求された量が読み込まれる前にデータラインが閉じられ、停止され、排水され、またはフラッシュされた場合、メソッドはブロックされませんが、それまでに読み込まれたバイト数を返します。

だから、多分あなたは(フラッシングなどを止める)(多分Mixer.getTargetLinesを使用して)使用されているのTargetDataLine(複数可)にアクセスし、あまりにもそれらに基づいて行動しようとしようとすることができます。しかし、それをやることの副作用があるかどうかは確かではありません。

共有できる問題に関する追加情報はありますか?あなたはjsp、GlassFish、JavaScriptについて言及していますので、アプレットを使ってファイルを再生しているか、Javaを使用してサーバー側を混ぜて、結果ファイルをブラウザが処理するように送信していると思います。これは正しいですか?

+0

はい、JavaではAudioInputStreamクラスのメソッドを使用していますが、アプレットでは使用しません。私は、サーバー上のオーディオをサンプリングし、その結果をクライアントのブラウザに送信しています。あなたのソリューションを実装してお知らせします。どうもありがとうございました。 –

関連する問題