2012-08-23 100 views
3

我想用JLayer解碼MP3文件。我已經搜索並搜索了關於如何完成此操作的文檔和示例,並且沒有任何用處。我發現的所有內容都嵌入在其他示例或JavaSound中,這在我的情況下是不可接受的。用JLayer解碼MP3文件

我覺得這很容易,但我不知道該怎麼做。我不知道參數是什麼

Decoder decoder = new Decoder(); 
decoder.decodeFrame(Header header, Bitstream stream); 

或如何獲取它們。

tl; dr如何解碼除JLayer以外的任何文件的MP3文件?沒有MP3 SPI,JavaSound,Tritonus - 什麼也沒有。

+0

你想解碼並做什麼?存儲爲Wave文件?用揚聲器播放它? –

+0

@VitalyPolonetsky將樣本存儲在一個數組中。我只是想能夠從一個mp3文件中獲取所有的樣本。 – Albatross

+0

所以你想存儲樣本以備將來使用(我想)。但是你需要什麼格式的樣本? –

回答

4

自己想出來。

Bitstream bitStream = new Bitstream(new FileInputStream("path/to/audio.mp3")); 

while(condition){ 
    Decoder decoder = new Decoder(); 
    int[] samples = decoder.decodeFrame(bitStream.readFrame(), bitStream); //returns the next 2304 samples 
    bitStream.closeFrame(); 

    //do whatever with your samples 
} 
+0

什麼是條件? –

+0

無論你想要什麼。它控制着多少mp3被解碼。所以如果你想解碼整個文件,你的條件是是否有更多的樣本需要解碼。 – Albatross

+0

@信天翁:這真的很有趣。你認爲這可以用來通過互聯網傳輸mp3嗎?而且你在這段時間之後如何演奏這些樣本? – dynamic