使用JLayer解码MP3文件

3
我想使用JLayer解码MP3文件。我已经搜索了相关文档和示例,但是没有找到有用的信息。我发现所有的内容都嵌套在其他示例中或者参考JavaSound,这对我的情况不可接受。
我感觉这应该很容易,但是我无法理解如何操作。我不知道参数是什么。
Decoder decoder = new Decoder();
decoder.decodeFrame(Header header, Bitstream stream);

或如何获取它们。

简言之,我该如何仅使用JLayer解码MP3文件?没有MP3 SPI、JavaSound、Tritonus等其他工具。


你想要解码并做什么?存储为Wave文件?使用扬声器播放? - m_vitaly
将样本存储在数组中。我只想能够从mp3文件中获取所有样本。 - Albatross
所以你想要存储样本以备将来使用(我猜测)。但是你需要以什么格式存储这些样本? - m_vitaly
Jlayer有一个decodeFrame方法,它返回一个样本缓冲区。我只想知道如何使用该方法来获取给定数量的样本。 - Albatross
@Albatross,你有使用jLayer将.mp3转换为PCM数据的代码吗? - Udit Kumawat
1个回答

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
}

无论你想要什么。它控制着解码mp3文件的程度。因此,如果您想要解码整个文件,则条件是是否有更多样本需要解码。 - Albatross
@Albatross:这真的很有趣。你认为这可以用来在互联网上流式传输mp3吗?还有,在while后面如何播放这些样本? - dynamic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接