0
我正在努力嘗試從麥克風錄製文件,同時爲音量計採樣audioInputStream。我無法計算如何將流/樣本保存到文件中,同時緩衝用於測量的樣本。下面是一些代碼片段:將聲音從麥克風錄製到帶有Java聲音計量器的文件中
format = new AudioFormat(11025, 16, 1, true, true);
DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format);
line.start(); // start capturing
in = new AudioInputStream(line);
我然後啓動一個線程來捕獲樣本:
int bytesRead = in.read(buffer, readPoint, buffer.length - readPoint);
if (bytesRead == -1) {
notYetEOF = false;
break;
}
int leftover = bytesRead % frameSize;
calculateRMSLevel(buffer, readPoint, leftover);
...
這裏就是我卡住了。我知道我不能只用:
AudioSystem.write(in, fileType, file);
,因爲它當然會捕捉到文件,但是這永遠不會回來,因爲麥克風流沒有關閉。我嘗試過嘗試將byte []數據更改爲AudioInputStream而不成功的各種方法。
那麼,如何在同步(或更好的異步)保存到麥克風的wav文件輸入時採集採樣數據?
是的!這樣可行! –