我正在製作一個修改原始聲音的程序。需要此流程的幫助(AudioInputStream - >字節數組 - > AudioOutputStream)
我的程序的過程就在這裏。
- 獲取聲音從的AudioInputStream
- 更改聲音數據爲字節數組。(我的AudioFormat的幀大小是,所以,我會用字節數組長度)
- 修改字節數組(類似於「乘以-1到每個元素」)
- 發送修改的字節數組到AudioOutputStream
- 發出聲音。
我做的過程1,2和3
這裏是我的CODE過程1,2,3
try {
byte[] packet = new byte[4];
int result;
while((result = audioInputStream.read(packet)) != -1)
for(int i = 0;i < 4;i++)
reflectedPacket[i] = (byte)(-1 * packet[i]);
//I think I have to do something to send packet to AudioOutputStream in here
}
catch(IOException ioe) {
System.out.println(ioe.getMessage());
}
不過,我不知道該怎麼辦過程4 ,發送改性字節數組AudioOutputStream
只見其使用源的ByteArray的InputStream。
然而,這是源讀取文件,而不是AudioInput :(
我怎樣才能做到過程4和5?
謝謝你的回答!我很抱歉,但是,你能給我更詳細的信息**來自AudioInputStream的字節數組如何看起來像**?我注意到來自AudioInputStream的4字節數組表示左邊高字節/左低/右高/右低。我從來沒有見過這樣的解釋。 – 2014-11-06 09:07:44
我想要做的是主動噪聲消除。所以我必須使輸入聲音(AudioInputStream)反相。並將其寫入揚聲器。有沒有關於主動噪音消除的建議? – 2014-11-06 09:10:07
*「來自AudioInputStream的字節數組如何看起來像?」*這真的需要一個漫長的解釋。 Java聲音資源常見問題包含很多解釋這種類型的問題的答案,特別是[*'樣本是如何以字節數組/流的形式組織的?'](http://www.jsresources.org/faq_audio.html#樣本_組織) – Radiodef 2014-11-06 16:35:53