我做了一些研究,也许它会对你有所帮助.
文件结构
MP3文件由多个MP3帧组成,包括标题和数据块.这个帧序列称为基本流.帧不是独立的项("字节存储器"),因此不能在任意帧边界上提取.MP3数据块包含频率和幅度方面的(压缩)音频信息.该图显示MP3标头包含一个同步字,用于标识有效帧的开头.接下来是一个指示这是MPEG标准的位和两个指示使用第3层的位; 因此MPEG-1 Audio Layer 3或MP3.此后,值将有所不同,具体取决于MP3文件.ISO/IEC 11172-3定义了报头每个部分的值范围以及报头的规范.今天大多数MP3文件都包含ID3元数据,它位于MP3帧之前或之后; 如图中所示.
LAME的源代码
LAME是一个MP3库,但它也是开源的,这意味着你可以下载源代码并查看它. http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz/download 我亲自看了一下,好像是用C或C++编写的,所以你很幸运 如果您检查LAME的源代码,并了解它的工作原理,也许您可以成功制作自己的MP3库.请注意,LAME不是用于播放MP3文件的库,而是用于编码它们的库.但是因为它创造了MP3而不是阅读它们,我认为结构应该比任何其他MP3播放器库更清晰.
MP3文件格式的说明
这也似乎解释了MP3如何运作得相当好,但它是纯粹的理论,所以你需要很多耐心. http://www.mp3-converter.com/mp3codec/