我正在使用Java中的音樂可視化工具,但我遇到了一個概念性問題,我遇到了麻煩。我的程序成功地讀取了音頻,並且已經算出了數學運算/繪圖函數,但是我的問題是確定如何設置我的方法,以便我的程序在音頻播放時繪製視覺而。分析音頻文件java
這是我的代碼用於讀取音頻(後一行被創建,並AudioInputSystem,保存爲AIS,被稱爲與getAudioInputStream文件)一個片斷:
byte[] data = new byte[EXT_BUFF_SIZE];
int bytesRead =0;
while(bytesRead!= -1){
try{
bytesRead = ais.read(data,0,data.length);
}catch(IOException e){e.printStackTrace();}
if(bytesRead>0){
int bytesWritten = line.write(data,0,bytesRead);
}
}
line.drain();
line.close();
我我試圖在其他地方呼叫其他功能,或嘗試無效。我也希望可以把它放在line.write()之前,但它不會。
似乎唯一的解決方案是調用文件增量的讀取和寫入功能,而不是整個事情,但恐怕會造成播放中斷。這是我第一次在這裏發佈,經過很多潛伏之後,希望我在解釋我的問題時足夠詳細。如果沒有,我會最後一次嘗試:如何組織一個程序來讀取一個音頻文件,然後對文件進行一系列算術運算,看起來兩者同時發生(或者它們可能同時使用Thread調度或我不能完全弄清楚)?預先感謝任何和所有幫助!
「恐怕這會造成間斷......」請嘗試征服你的恐懼並在有真正問題時回來。 – Kayaman
「......在創建一行後......」「line」是表示「行級音頻輸出設備」的變量的名稱? – geneSummons
對不起,我應該包含更多的代碼。 Line是一個SourceDataLine,它是從文件讀取和寫入數據的內容。我不明白的是SourceDataLine如何讀取**和**,並且不清楚播放的起始位置。 Kayaman,我在這裏讀了很多關於功能如何工作的問題,而不是簡單地修復錯誤。抱歉浪費你的時間。 – Scott