簡體   English   中英

分析音頻文件Java

[英]Analyzing audio files java

我正在用Java開發音樂可視化程序,但是遇到了一個概念性問題,難以解決。 我的計划成功讀取音頻和我已經想通了的數學運算/繪圖功能,但我的問題是搞清楚如何設置我的方法,使得我的程序得出的視覺效果,同時在音頻播放。

這是我的代碼片段,用於讀取音頻(創建一行后,並且使用getAudioInputStream在文件上調用了保存為ais的AudioInputSystem):

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可能同時發生)日程安排或我無法弄清楚的事情)? 在此先感謝您提供的所有幫助!

您應該能夠以特定大小的“塊”來處理和播放音頻文件,就像音頻驅動程序處理音頻流一樣。 (每塊128、256、512等樣本)每塊更多的樣本意味着音頻播放器為下一塊音頻樣本做好准備之前,每塊需要更多的“可視化處理”時間。 您可以嘗試使用塊大小,以在足夠的可視化處理時間和無故障播放之間找到良好的平衡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM