Javadocsによると、javax.sound.sampledTargetDataLine
次の方法を使用した場合:
public void open(AudioFormat format,int bufferSize)
それは言う:
この要件を満たさない要求されたバッファサイズでこのメソッドを呼び出すと、IllegalArgumentExceptionが発生する可能性があります。`
したがって、次のJavaコードを実装すると次のようになります。
AudioFormat format = getAudioFormat();
DataLine.Info info = new DataLine.Info(TargetDataLine.class,format);
// open the TargetDataLine for capture.
try {
TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize()+3000);
}
catch (LineUnavailableException ex)
{
ex.printStackTrace();
}
しかし、上記のコードを実行しても、例外はスローされません。今ドキュメントによると:
public int getBufferSize()
データラインの内部バッファに収まるデータの最大バイト数を取得します。ソースデータラインの場合、これはデータを書き込むことができるバッファのサイズです。ターゲットデータラインの場合、データを読み取ることができるバッファのサイズです。使用される単位はバイトですが、オーディオデータのサンプルフレームの整数に常に対応することに注意してください。
これは、最大サイズが返されることを示しており、私は3000を追加しました
line.open(format, line.getBufferSize()+3000);
上に示したように、なぜ例外をスローしないのですか?