mmapi プロトコルを使用してマイクからの音量を分析するアプリを作成しようとしています。必要なのは、マイクからのオーディオ レベルを検出し、これをリアルタイムで表示することだけです。
私は RecordControl を使用していますが、データがバッファに書き込まれる前にストリームを停止する必要があるようです。20 ~ 40 ミリ秒の非常に短い音声バーストを記録するスレッドを作成しようとしましたが、遅すぎます。これが実行可能な解決策であるためには、ストリームを開始および停止するときに多くのオーバーヘッドが発生します。
Player recordPlayer = Manager.createPlayer("capture://audio");
recordPlayer.realize();
RecordControl recordControl = (RecordControl) recordPlayer.getControl("RecordControl");
output = new ByteArrayOutputStream();
recordControl.setRecordStream(output);
recordPlayer.start();
recordControl.startRecord();
while(running)
{
if (recordPlayer != null)
{
Thread.sleep(25);
// Nothing here??
byte []data = output.toByteArray();
}
}
recordPlayer.stop();
recordControl.stopRecord();
recordControl.commit();