我想扮演的是使用下面的方法存儲爲一個字節數組聲音:播放直接從字節數組的聲音 - Java的
byte[] clickSamples = getAudioFileData("sound.wav");
ByteBuffer buffer = ByteBuffer.allocate(bufferSize*2);
int tick = 0;
for (int i = 0; i < clickSamples.length; i++) {
buffer.putShort((short) clickSamples[i]);
tick++;
if (tick >= bufferSize/SAMPLE_SIZE) {
line.write(buffer.array(), 0, buffer.position());
buffer.clear();
tick = 0;
}
}
這是一種很難解釋什麼錯。我得到一個聲音,但它只是像一個「旋風」 - 一種噪音。
我想使用這個方法的字節緩衝區等,因爲我的整個應用程序是圍繞它建立的。使用剪輯或AudioInputStream不是一個真正的選擇。
所以我想我的問題是:
如何播放聲音直接使用一個字節的緩衝區我的字節數組?
謝謝你的幫助!
任何機會:如果您將您的ByteBuffer命令設置爲little endian會發生什麼? – fge
我也注意到,我聽到的聲音聽起來像是我的聲音文件向後播放,但失真並伴有大量白色噪音。通過將緩衝區順序變爲小端,一切都變得更響。 – Macks
我用來獲取音頻數據的方法是這樣的:http://snippi.com/s/ndi3f4x – Macks