如何从MP3获取音频数据?

2022-09-02 09:39:21

我正在开发一个必须处理音频文件的应用程序。使用mp3文件时,我不确定如何处理数据(我感兴趣的数据是音频字节,代表我们听到的数据)。

如果我使用的是wav文件,我知道我有一个44字节的标头,然后是数据。当谈到mp3时,我已经读到它们由帧组成,每个帧包含一个标题和音频数据。是否可以从mp3文件中获取所有音频数据?

我正在使用java(我已经添加了MP3SPI,Jlayer和Tritonus),并且能够从文件中获取字节,但我不确定这些字节代表什么或如何处理。


答案 1

MP3SPI 的文档:

File file = new File(filename);
AudioInputStream in= AudioSystem.getAudioInputStream(file);
AudioInputStream din = null;
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 
                                            baseFormat.getSampleRate(),
                                            16,
                                            baseFormat.getChannels(),
                                            baseFormat.getChannels() * 2,
                                            baseFormat.getSampleRate(),
                                            false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);

然后,您只需从中读取数据 - 它将是“原始”数据,如.(有关详细信息,请参阅 AudioFormat 的文档。dindecodedFormat

(请注意,此示例代码不会关闭流或类似内容 - 像往常一样使用适当的 try/final 块。


答案 2

所需的数据是实际示例,而 MP3 则以不同的方式表示数据。因此,就像其他人所说的那样 - 您需要一个库来将MP3数据解码为实际样本。


推荐