我正在尝试编写一个使用 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();