2012-08-23 73 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