2012-09-14 81 views
1

我在將字節轉換爲.mp3聲音文件時遇到問題。在我的情況下,我使用FileOutputStream使用其寫入(字節)方法執行此操作,但它只是創建一個帶有mp3擴展名的數據文件,但無法在PC上的任何播放器中播放它。Flex - Java byte to mp3

注:我從Flex Michrophone錄製它並將ByteArray發送給java。

我應該用哪些庫在java中添加mp3聲音文件頭等等?

更新:我甚至無法將我的原始數據轉換爲java聲音api支持的波形格式。它爲我創建錄製聲音的聲音,但帶有噪音 - 問題在哪裏?

這裏是我的波代碼:

AudioFormat format = new AudioFormat(Encoding.PCM_SIGNED, 44100, 16, 2, 2, 44100, true); 

ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 
AudioInputStream stream = new AudioInputStream(bais, format, bytes.length/format.getFrameSize()); 


AudioSystem.write(stream, AudioFileFormat.Type.WAVE, new File(path+"zzz.wav")); 

這有什麼錯我的AudioFormat ???哪一個我必須在MP3的情況下使用?!

緊急求助!任何幫助將不勝感激!

回答

2

只要將原始字節寫入名稱擴展名爲.mp3的文件,不會奇蹟般地將數據轉換爲MP3格式。您需要使用編碼器來壓縮它。

快速谷歌搜索發現LAMEOnJ這是一個流行的LAME MP3編碼器的Java API。

+0

實際上,我需要的是一個不使用系統庫的庫 - 因爲我在Mac OS上開發,我正在開發的程序必須在Windows和Linux上工作?這種使用系統庫的類庫會浪費我的時間在測試上。 –

+0

最近我發現了lamejb庫,它是Lame的一個包裝 - 所以不需要系統中的任何Lame庫。但是在任何地方都沒有任何示例,下載zip文件夾中的示例文件夾就是我無法理解的測試類 –