MP3文件结构(1)

xiaoxiao2021-02-28  107

概述:整个MP3文件大体分为三部分:TAG_V2(ID3V2),音频数据帧(Frame),TAG_V1(ID3V1);

结构描述ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。Frame一系列的帧,个数由文件大小和帧长决定;每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定;每个FRAME又分为帧头和数据实体两部分;帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立。ID3V1包含了作者,作曲,专辑等信息,长度为128BYTE。

1、ID3V2

ID3V2 到现在一共有4 个版本,但流行的播放软件一般只支持第3 版, 既ID3v2.3。 ID3V2.3 的标签有一个标签头和若干个标签帧(含标签帧头10字节)或一个扩展标签头组成。关于曲目的信息如标题、作者等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签头和标签帧一起顺序存放在MP3 文件的首部。

标签头

在文件的首部顺序记录10 个字节的标签头。数据结构如下

char Header[3]; /*必须为"ID3"否则认为标签不存在*/ char Ver; /*版本号ID3V2.3 就记录3*/ char Revision; /*副版本号此版本记录为0*/ char Flag; /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/ char Size[4]; /*标签帧大小=包括所有标签帧头(非标签头)的10 个字节和所有的标签帧内容的大小*/ 标签帧大小计算公式:total_size =(Size[0]&0x7F)*0x80*0x80*0x80 +(Size[1]&0x7F)*0x80*0x80 + (Size[2]&0x7F)*0x80 +(Size[3]&0x7F)

ID3V2部分的总大小=标签帧大小+标签头大小10;

标签帧

标签帧数据的起始位置顺序记录了10个字节的标签帧头,数据结构如下

char ID[4]; /*用四个字符标识一个帧,说明其内容,稍后有常用的标识对照表*/ char Size[4]; /*帧内容的大小,不包括帧头,不得小于1*/ char Flags[2]; /*存放标志,只定义了6 位,稍后详细解说*/ 标签帧内容大小计算公式:FSize = Size[0]*0x100000000 + Size[1]*0x10000+ Size[2]*0x100 + Size[3];
转载请注明原文地址: https://www.6miu.com/read-33454.html

最新回复(0)