与MP3相关的技术总结

MP3文件格式解析

Peter Lee 2008-06-05

 

目录

一、概述...

二、整个MP3文件结构...

三、MP3帧格式...

1. 帧头格式...

2. MAIN_DATA..

四、ID3标准...

1. ID3V1.

2. ID3V2.

五、MP3文件实例剖析...

六、资料...

 

一、            概述

MP3 文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位。MP3 的全称应为 MPEG1 Layer-3 音频

文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG

音频文件是 MPEG1 标准中的声音部分,也叫 MPEG 音频层,它根据压缩质量和编码复杂程度划分为三层,即

Layer-1、Layer2、Layer3,且分别对应 MP1、MP2、MP3 这三种声音文件,并根据不同的用途,使用不同层

次的编码。MPEG 音频编码的层次越高,编码器越复杂,压缩率也越高,MP1 和 MP2 的压缩率分别为 4:1 和

6:1-8:1,而 MP3 的压缩率则高达 10:1-12:1,也就是说,一分钟CD 音质的音乐,未经压缩需要 10MB

的存储空间,而经过 MP3 压缩编码后只有 1MB 左右。不过 MP3 对音频信号采用的是有损压缩方式,为了降

低声音失真度,MP3 采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后用过滤器滤掉

噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的 MP3 文件,并使压

缩后的文件在回放时能够达到比较接近原音源的声音效果。

 

二、整个MP3文件结构

MP3文件大体分为三部分:TAG_V2(ID3V2),Frame, TAG_V1(ID3V1)

ID3V2

包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。

Frame

.

.

.

Frame

一系列的帧,个数由文件大小和帧长决定

每个FRAME的长度可能不固定,也可能固定,由位率bitrate决定

每个FRAME又分为帧头和数据实体两部分

帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立

ID3V1

包含了作者,作曲,专辑等信息,长度为128BYTE。

 

三、MP3帧格式

1. 帧头格式

帧头长4字节,对于固定位率的MP3文件,所有帧的帧头格式一样其数据结构如下:

 

typedef FrameHeader {

unsigned int sync:11;                        //同步信息

unsigned int version:2;                      //版本

unsigned intlayer:2;                                    //层

unsigned int errorprotection: 1;                 // CRC校验

unsigned intbitrate_index:4;             //位率

unsigned intsampling_frequency: 2;         //采样频率

unsigned intpadding:1;                    //帧长调节

unsigned intprivate:1;                       //保留字

unsigned int mode:2;                         //声道模式

unsigned int modeextension: 2;        //扩充模式

unsigned intcopyright:1;                           // 版权

unsigned intoriginal:1;                      //原版标志

unsigned intemphasis:2;                  //强调模式

}HEADER, *LPHEADER;

 

帧头4字节使用说明见表1。

 

MP3帧长取决于位率和频率,计算公式为:

 

. mpeg1.0       layer1:   帧长= (48000*bitrate)/sampling_freq +padding

              layer2&3: 帧长= (144000*bitrate)/sampling_freq +padding

. mpeg2.0       layer1:   帧长= (24000*bitrate)/sampling_freq +padding

layer2&3 : 帧长= (72000*bitrate)/sampling_freq + padding

例如:位率为64kbps,采样频率为44.1kHz,padding(帧长调节)为1时,帧长为210字节。

帧头后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,紧接其后的是压缩的声音数据,当解码器读到此处时就进行解码了。

 

表1 MP3帧头字节使用说明

名称

位长

说          明

同步信息

11

第1、2字节

所有位均为1,第1字节恒为FF。

版本

2

00-MPEG 2.5   01-未定义     10-MPEG 2     11-MPEG 1

2

00-未定义      01-Layer 3     10-Layer 2      11-Layer 1

CRC校验

1

0-校验        1-不校验

位率

4

第3字节


 取样率,单位是kbps,例如采用MPEG-1 Layer 3,64kbps是,值为0101。

bits

V1,L1

V1,L2

V1,L3

V2,L1

V2,L2

V2,L3

0000

free

free

free

free

free

free

0001

32

32

32

32(32)

32(8)

8 (8)

0010

64

48

40

64(48)

48(16)

16 (16)

0011

96

56

48

96(56)

56(24)

24 (24)

0100

128

64

56

128(64)

64(32)

32 (32)

0101

160

80

64

160(80)

80(40)

64 (40)

0110

192

96

80

192(96)

96(48)

80 (48)

0111

224

112

96

224(112)

112(56)

56 (56)

1000

256

128

112

256(128)

128(64)

64 (64)

1001

288

160

128

288(144)

160(80)

128 (80)

1010

320

192

160

320(160)

192(96)

160 (96)

1011

352

224

192

352(176)

224(112)

112 (112)

1100

384

256

224

384(192)

256(128)

128 (128)

1101

416

320

256

416(224)

320(144)

256 (144)

1110

448

384

320

448(256)

384(160)

320 (160)

1111

bad

bad

bad

bad

bad

bad

V1 - MPEG 1    V2 - MPEG 2 and MPEG 2.5
L1 - Layer 1     L2 - Layer 2     L3 - Layer 3
"free" 表示位率可变    "bad"  表示不允许值

采样频率

2


采样频率,对于MPEG-1:  00-44.1kHz    01-48kHz    10-32kHz      11-未定义

          对于MPEG-2:  00-22.05kHz   01-24kHz    10-16kHz      11-未定义

          对于MPEG-2.5: 00-11.025kHz 01-12kHz    10-8kHz       11-未定义

帧长调节

1

用来调整文件头长度,0-无需调整,1-调整,具体调整计算方法见下文。

保留字

1

没有使用。

声道模式

2

第4字节

表示声道, 00-立体声Stereo    01-Joint Stereo    10-双声道        11-单声道

扩充模式

2


当声道模式为01是才使用。

Value

强度立体声

MS立体声

00

off

off

01

on

off

10

off

on

11

on

on

版权

1

文件是否合法,0-不合法   1-合法

原版标志

1

是否原版,    0-非原版   1-原版

强调方式

2


用于声音经降噪压缩后再补偿的分类,很少用到,今后也可能不会用。

00-未定义     01-50/15ms     10-保留       11-CCITT J.17

 

2. MAIN_DATA

MAIN_DATA 部分长度是否变化决定于 FRAMEHEADER 的 bitrate是否变化,一首 MP3 歌曲,它有三个版

本:96Kbps(96 千比特位每秒)、128Kbps 和 192Kbps。Kbps(比特位速率),表明了音乐每秒的数据量,

Kbps 值越高,音质越好,文件也越大,MP3 标准规定,不变的 bitrate 的 MP3 文件称作CBR,大多数 MP3

文件都是 CBR 的,而变化的 bitrate 的 MP3 文件称作VBR,每个 FRAME 的长度都可能是变化的。下面是 CBR

和 VBR 的不同点:

1)CBR:固定位率的 FRAME 的大小是固定的(公式如上所述),只要知道文件总长度,和帧长即可由播放每帧需 26ms 计算得出 mp3 播放的总时间,也可通过计数帧的个数控制快进、快退慢放等操作。注:有些时候,并不是所有的帧都是等长的,有的帧可能多一个或几个字节。

2)VBR:VBR 是XING 公司推出的算法,所以在 MP3 的 FRAME 里会有“XING"这个关键字(现在很多流行的

小软件也可以进行 VBR 压缩,它们是否遵守这个约定,那就不得而知了),它存放在 MP3 文件中的第一个有效 FRAME 里,它标识了这个 MP3 文件是 VBR 的。同时第一个 FRAME 里存放了 MP3 文件的 FRAME 的总个数,这就很容易获得了播放总时间,同时还有 100 个字节存放了播放总时间的 100 个时间分段的 FRAME 的INDEX,假设 4 分钟的 MP3 歌曲,240S,分成 100 段,每两个相邻 INDEX 的时间差就是 2.4S,所以通过这个 INDEX,只要前后处理少数的 FRAME,就能快速找出我们需要快进的 FRAME 头。

表2 VBR文件第一帧结构

字节

说    明

1-4

与CBR相同的标准声音帧头

5-40

存放VBR文件标识“Xing”(58 69 6E 67),此标识具体位置视采用的MPEG标准和声道模式而定。标识的前后字节没有使用。

36-39

MPEG-1和非单声道(常见)

21-24

MPEG-1和单声道

21-24

MPEG-2和非单声道

13-16

MPEG-2和单声道

41-44

标志,说明是否存储了帧数、文件长度、目录表和VBR规模信息,如果存储了,则01 02 04 08。

45-48

帧数(包括第一帧)

49-52

文件长度

53-152

目录表,用来按时间进行字节定位。

153-156

VBR规模,用于位率变动

 

另可参考下文:

This system was created to minimize file lengths and topreserve sound quality.

Higher frequencies generally needs more space forencoding (thats why many codecs cut all

frequencies above cca 16kHz) and lower tones requiresless. So if some part of song doesnt consistof higher tones then using eg.192kbps is wasting of space. It should be enough to use only eg.96kbps.

And it is the principle of VBR. Codec looks over frameand then choose bitrate suitable for itssound quality.

It sounds perfect but it brings some problems:

If you want to jump over 2 minutes in song, it is not aproblem with CBR because you are able

simply count amount of Bytes which is necessary to skip.But it is impossible with VBR. Frame

lengths should be arbitrary so you have to either goframe by frame and counts (time consuming

and very unpractical) or use another mechanism forapproximate count.

If you want to cut 5 minutes from the middle of VBR file(all we know CDs where last song takes

10 minutes but 5 minutes is a pure silence, HELL!)problems are the same.

Result? VBR files are more difficult for controlling andadjusting. And I dont like feeling that

sound quality changes in every moment. And AFAIK manycodecs have problems with creation VBR ingood quality.

Personally I cant see any reason why to use VBR - I dontgive a fuck if size of one CD in MP3is 55 MB with CBR or 51 MB with VBR. Buteverybody has a different taste... some people preferVBR.

VBR File Structureis the same as for CBR. But the firstframe doesnt contain audio data and it is used for special

information about VBR file.

Structure of the first frame:

Byte        Content

0-3         Standard audio frame header (as descripted above). Mostly it contains values FF

            FB 30 4C, fromwhich you can count FrameLen = 156 Bytes. And thats exactly enough

            space for storing VBR info.

            This header contains some important information valid for the whole file:

            - MPEG (MPEG1 or MPEG2)

            - SAMPLING rate frequency index

            - CHANNEL (JointStereo etc.)

4-x         Not used till string "Xing" (58 69 6E 67). This string is used as amain VBR file

            identifier. If it is not found, file is supposed to be CBR. This string can beplaced

            at different locations according to values of MPEG and CHANNEL (ya, these froma

            few lines upwards):

36-39       "Xing" for MPEG1 and CHANNEL != mono (mostly used)

21-24       "Xing" for MPEG1 and CHANNEL == mono

21-24       "Xing" for MPEG2 and CHANNEL != mono

13-16       "Xing" for MPEG2 and CHANNEL == mono

            After "Xing" string there are placed flags, number of frames in fileand a size

            of file in Bytes. Each of these items has 4 Bytes and it is stored as 'int'number

            in memory. The first is the most significant Byte and the last is the least.

            Following schema is for MPEG1 and CHANNEL != mono:

40-43        Flags

             Value        Name             Description

             00 00 00 01   Frames Flag       set ifvalue for number of frames in file is stored

             00 00 00 02   Bytes Flag       set if value for filesize in Bytes is stored

             00 00 00 04   TOCFlag          set if values forTOC (see below) are stored

             00 00 00 08   VBR Scale Flag    set if values for VBRscale are stored

            All these values can be stored simultaneously.

44-47        Frames

            Number of frames in file (including the first info one)

48-51        Bytes

            File length in Bytes

52-151       TOC (Table ofContents)

             Contains of 100 indexes (one Byte length) for easier lookup in file.Approximately

             solves problem with moving inside file.

             Each Byte has a value according this formula:

             (TOC[i] / 256) * fileLenInBytes

             So if song lasts eg. 240 sec. and you want to jump to 60. sec. (and file is 5000

             000 Bytes length) you can use:

             TOC[(60/240)*100] = TOC[25]

             and corresponding Byte in file is then approximately at:

             (TOC[25]/256) * 5000000

             If you want to trim VBR file you should also reconstruct Frames, Bytes and TOC

             properly.

152-155       VBR Scale

             I dont know exactly system of storing of this values but this item probablydoesnt

             have deeper meaning.

 

四、ID3标准

MP3帧头中除了存储一些象private、copyright、original的简单音乐说明信息以外,没有考虑存放歌名、作者、专辑名、年份等复杂信息,而这些信息在MP3应用中非常必要。1996年,FricKemp在“Studio 3”项目中提出了在MP3文件尾增加一块用于存放歌曲的说明信息,形成了ID3标准,至今已制定出ID3 V1.0,V1.1,V2.0,V2.3和V2.4标准。版本越高,记录的相关信息就越丰富详尽。

1. ID3V1

ID3 V1.0标准并不周全,存放的信息少,无法存放歌词,无法录入专辑封面、图片等。V2.0是一个相当完备的标准,但给编写软件带来困难,虽然赞成此格式的人很多,在软件中真正实现的却极少。绝大多数MP3仍使用ID3 V1.0标准。此标准是将MP3文件尾的最后128个字节用来存放ID3信息,这128个字节使用说明见表3。

表3 ID3 V1.0文件尾说明

字节

长度 (字节)

说       明

1-3

3

存放“TAG”字符,表示ID3 V1.0标准,紧接其后的是歌曲信息。

4-33

30

歌名

34-63

30

作者

64-93

30

专辑名

94-97

4

年份

98-127

30

附注

128

1

MP3音乐类别,共147种。

表4 MP3音乐类别:

0

'Blues'

20

'Alternative'

40

'AlternRock'

60

'Top 40'

1

'Classic Rock'

21

'Ska'

41

'Bass'

61

'Christian Rap'

2

'Country'

22

'Death Metal'

42

'Soul'

62

'Pop/Funk'

3

'Dance'

23

'Pranks'

43

'Punk'

63

'Jungle'

4

'Disco'

24

'Soundtrack'

44

'Space'

64

'Native American'

5

'Funk'

25

'Euro-Techno'

45

'Meditative'

65

'Cabaret'

6

'Grunge'

26

'Ambient'

46

'Instrumental Pop'

66

'New Wave'

7

'Hip-Hop'

27

'Trip-Hop'

47

'Instrumental Rock'

67

'Psychadelic'

8

'Jazz'

28

'Vocal'

48

'Ethnic'

68

'Rave'

9

'Metal'

29

'Jazz+Funk'

49

'Gothic'

69

'Showtunes'

10

'New Age'

30

'Fusion'

50

'Darkwave'

70

'Trailer'

11

'Oldies'

31

'Trance'

51

'Techno-Industrial'

71

'Lo-Fi'

12

'Other'

32

'Classical'

52

'Electronic'

72

'Tribal'

13

'Pop'

33

'Instrumental'

53

'Pop-Folk'

73

'Acid Punk'

14

'R&B'

34

'Acid'

54

'Eurodance'

74

'Acid Jazz'

15

'Rap'

35

'House'

55

'Dream'

75

'Polka'

16

'Reggae'

36

'Game'

56

'Southern Rock'

76

'Retro'

17

'Rock'

37

'Sound Clip'

57

'Comedy'

77

'Musical'

18

'Techno'

38

'Gospel'

58

'Cult'

78

'Rock & Roll'

19

'Industrial'

39

'Noise'

59

'Gangsta'

79

'Hard Rock'

 

 

 

 

 

 

 

 

80

Folk

81

Folk/Rock

82

National Folk

83

Swing

84

Fast-Fusion

85

Bebob

86

Latin

87

Revival

88

Celtic

89

Bluegrass

90

Advantgarde

91

Gothic Rock

92

Progressive Rock

93

Psychadelic Rock

94

Symphonic Rock

95

Slow Rock

96

Big Band

97

Chorus

98

Easy Listening

99

Acoustic

100

Humour

101

Speech

102

Chanson

103

Opera

104

Chamber Music

105

Sonata

106

Symphony

107

Booty Bass

108

Primus

109

Porn Groove

110

Satire

111

Slow Jam

112

Club

113

Tango

114

Samba

115

Folklore

Any other value should be considered as 'Unknown'

 

2. ID3V2

ID3V2 到现在一共有 4 个版本,但流行的播放软件一般只支持第 3 版,既 ID3v2.3。由于 ID3V1 记录

在 MP3 文件的末尾,ID3V2 就只好记录在 MP3 文件的首部了(如果有一天发布ID3V3,真不知道该记录在哪

里)。也正是由于这个原因,对 ID3V2 的操作比 ID3V1 要慢。而且 ID3V2 结构比 ID3V1 的结构要复杂得多,

但比前者全面且可以伸缩和扩展。

 下面就介绍一下ID3V2.3。

 每个 ID3V2.3 的标签都一个标签头和若干个标签帧或一个扩展标签头组成。关于曲目的信息如标题、作者

等都存放在不同的标签帧中,扩展标签头和标签帧并不是必要的,但每个标签至少要有一个标签帧。标签

头和标签帧一起顺序存放在 MP3 文件的首部。

1、标签头

在文件的首部顺序记录 10 个字节的 ID3V2.3 的头部。数据结构如下:

 char Header[3];     /*必须为"ID3"否则认为标签不存在*/

 char Ver;     /*版本号 ID3V2.3 就记录 3*/

 char Revision;     /*副版本号此版本记录为 0*/

 char Flag;     /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/

 char Size[4];     /*标签大小,包括标签头的 10 个字节和所有的标签帧的大小*/

 1).标志字节

 标志字节一般为 0,定义如下:

 abc00000

 a -- 表示是否使用 Unsynchronisation(这个单词不知道是什么意思,字典里也没有找到,一般不设置)

 b -- 表示是否有扩展头部,一般没有(至少 Winamp 没有记录),所以一般也不设置

 c -- 表示是否为测试标签(99.99%的标签都不是测试用的啦,所以一般也不设置)

 2).标签大小

 一共四个字节,但每个字节只用 7 位,最高位不使用恒为 0。所以格式如下

 0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx

 计算大小时要将 0 去掉,得到一个 28 位的二进制数,就是标签大小(不懂为什么要这样做),计算公式如

下:

 int total_size;

 total_size =    (Size[0]&0x7F)*0x200000

   +(Size[1]&0x7F)*0x400

   +(Size[2]&0x7F)*0x80

   +(Size[3]&0x7F)

2、标签帧

每个标签帧都有一个 10 个字节的帧头和至少一个字节的不固定长度的内容组成。                   它们也是顺序存放在文件

中,和标签头和其他的标签帧也没有特殊的字符分隔。得到一个完整的帧的内容只有从帧头中的到内容大

小后才能读出,读取时要注意大小,不要将其他帧的内容或帧头读入。

帧头的定义如下:

 char FrameID[4];   /*用四个字符标识一个帧,说明其内容,稍后有常用的标识对照表*/

 char Size[4];    /*帧内容的大小,不包括帧头,不得小于 1*/

 char Flags[2];    /*存放标志,只定义了 6 位,稍后详细解说*/

 1).帧标识

 用四个字符标识一个帧,说明一个帧的内容含义,常用的对照如下:

 TIT2=标题 表示内容为这首歌的标题,下同

 TPE1=作者

 TALB=专集

 TRCK=音轨 格式:N/M        其中 N 为专集中的第 N 首,M 为专集中共 M 首,N 和 M 为 ASCII 码表示的数字

 TYER=年代 是用 ASCII 码表示的数字

 TCON=类型 直接用字符串表示

 COMM=备注 格式:"eng\0 备注内容",其中 eng 表示备注所使用的自然语言

 2).大小

 这个可没有标签头的算法那么麻烦,每个字节的 8 位全用,格式如下

 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx

 算法如下:

 int FSize;

 FSize = Size[0]*0x100000000

 +Size[1]*0x10000

 +Size[2]*0x100

 +Size[3];

 3).标志

 只定义了 6 位,另外的 10 位为 0,但大部分的情况下 16 位都为 0 就可以了。格式如下:

 abc00000 ijk00000

 a -- 标签保护标志,设置时认为此帧作废

 b -- 文件保护标志,设置时认为此帧作废

 c -- 只读标志,设置时认为此帧不能修改(但我没有找到一个软件理会这个标志)

 i -- 压缩标志,设置时一个字节存放两个 BCD 码表示数字

 j -- 加密标志(没有见过哪个 MP3 文件的标签用了加密)

 k -- 组标志,设置时说明此帧和其他的某帧是一组

 值得一提的是 winamp在保存和读取帧内容的时候会在内容前面加个'\0',并把这个字节计算在帧内容的

大小中。

附:帧标识的含义

4).    Declared ID3v2 frames

   The following frames are declared in thisdraft.

 AENC Audio encryption

 APIC Attached picture

 COMM Comments

 COMR Commercial frame

 ENCR Encryption method registration

 EQUA Equalization

 ETCO Event timing codes

 GEOB General encapsulated object

 GRID Group identification registration

 IPLS Involved people list

 LINK Linked information

 MCDI Music CD identifier

 MLLT MPEG location lookup table

 OWNE Ownership frame

 PRIV Private frame

 PCNT Play counter

 POPM Popularimeter

 POSS Position synchronisation frame

 RBUF Recommended buffer size

 RVAD Relative volume adjustment

 RVRB Reverb

 SYLT Synchronized lyric/text

 SYTC Synchronized tempo codes

 TALB Album/Movie/Show title

 TBPM BPM (beats per minute)

 TCOM Composer

 TCON Content type

 TCOP Copyright message

 TDAT Date

 TDLY Playlist delay

 TENC Encoded by

 TEXT Lyricist/Text writer

 TFLT File type

TIME Time

TIT1 Content group description

TIT2 Title/songname/content description

TIT3 Subtitle/Description refinement

TKEY Initial key

TLAN Language(s)

TLEN Length

TMED Media type

TOAL Original album/movie/show title

TOFN Original filename

TOLY Original lyricist(s)/text writer(s)

TOPE Original artist(s)/performer(s)

TORY Original release year

TOWN File owner/licensee

TPE1 Lead performer(s)/Soloist(s)

TPE2 Band/orchestra/accompaniment

TPE3 Conductor/performer refinement

TPE4 Interpreted, remixed, or otherwise modified by

TPOS Part of a set

TPUB Publisher

TRCK Track number/Position in set

TRDA Recording dates

TRSN Internet radio station name

TRSO Internet radio station owner

TSIZ Size

TSRC ISRC (international standard recording code)

TSSE Software/Hardware and settings used for encoding

TYER Year

TXXX User defined text information frame

UFID Unique file identifier

USER Terms of use

USLT Unsychronized lyric/text transcription

WCOM Commercial information

WCOP Copyright/Legal information

WOAF Official audio file webpage

WOAR Official artist/performer webpage

WOAS Official audio source webpage

WORS Official internet radio station homepage

WPAY Payment

WPUB Publishers official webpage

WXXX User defined URL link frame

 

五、MP3文件实例剖析

在VC++中打开一个名为test.mp3文件,其内容如下:

000000 FF FB 52 8C 00 00 01 49 09 C5 05 24 60 00 2AC1

000010 19 40 A6 00 00 05 96 41 34 18 20 80 08 26 48 29

000020 83 04 0001 61 41 40 50 10 04 00 C1 21 4150 64

……

0000D0 FE FF FB52 8C 11 80 01 EE 90 65 6E 08 2002 30

0000E0 32 0C CD C0 04 00 46 16 41 89 B8 01 00 08 36 48

0000F033 B7 00 0001 02 FF FF FF F4 E1 2F FF FF FFFF

……

0001A0 DF FF FF FB52 8C 12 00 01 FE 90 58 6E 09 A0 02

0001B0 33 B0 CA85 E1 50 01 45 F6 19 61BC 26 80 28 7C

0001C0 05 AC B4 20 28 94 FF FF FF FF FF FF FF FF FFFF

……

001390 7F FF FF FF FD 4E 00 54 41 47 54 45 5354 00 00

0013A0 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00

……

0013F000 00 00 0004 19 14 03 00 00 00 00 00 00 00 00

001400 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00

001410 00 00 0000 00 00 4E

该文件长度1416H(5.142K),帧头为:FF FB 52 8C,转换成二进制为:

11111111 11111011

01010010 10001100

对照表1可知,test.mp3帧头信息见表5。

表5 test.mp3文件帧头信息

名称

位值

说     明

同步信息

11111111111

第1字节恒为FF,11位均为1。

版本

11

MPEG 1

01

Layer 3

CRC校验

1

不校验

位率

0101

64kbps

频率

00

44.1kHz

帧长调节

1

调整,帧长是210字节。

保留字

0

没有使用。

声道模式

10

双声道

扩充模式

00

未使用。

版权

1

合法

原版标志

1

原版

强调方式

00

未定义

第1397H开始的三个字节是54 41 47,存放的是字符“TAG”,表示此文件有ID3 V1.0信息。

139AH开始的30个字节存放歌名,前4个非00字节是54 45 53 54,表示“TEST”;

13F4H开始的4个字节是04 19 14 03,存放年份“04/25/2003”;

最后1个字节是4E,表示音乐类别,代号为78,即“Rock&Roll”;

其它字节均为00,未存储信息。

 

六、资料

www.id3.org

 

时间: 2024-09-20 00:38:01

与MP3相关的技术总结的相关文章

XML相关的技术

xml   XHTML - 可扩展的 HTML      XHTML是HTML 4.01: 在 XML 中的再生成的产物. XHTML 1.0 是HTML的最新版本.更多内容请阅读 XHTML School.   CSS - 层叠样式表: 可以将CSS 格式表增加到XML文档中来提供显示信息.更多内容请阅读CSS School.   XSL - 可扩展的格式表语言:XSL 包括三部分:XML文档转换(重命名为XSLT, 见下面),一个格式匹配语法(重命名为XPath,见下面),以及一个格式化对象

TF-IDF:传统IR的相关排序技术(二)

  既然是二,就是顺着上一篇文章<TF-IDF:传统IR的相关排序技术>写下来的.所以,有兴趣的同学请先看完第一篇文章再来继续. 好,我们继续开始二. 关于词频,只要你的分词工具够牛逼,就很好理解和实现.关于反文档频率,各位亲们,看到时会不会初时感觉很牛叉,然后细想会很有疑惑? 逆文档频率(idf)=log(文档总数/包含关键词的文档数量) 对,疑惑就在怎么获得"文档总数"与"包含关键词的文档数量"上. 在搜索引擎上,可以有一个不错的替代方式,下面听我细

TF-IDF:传统IR的相关排序技术

那一年,菊花还只是菊花,2B还是考试时涂卡使用的铅笔,黄瓜只有蔬菜的功能,信息检索技术(Information Retrieval)还只是简单的使用在图书馆.资料库等处. 也正是在那一年,信息检索的相关排序技术很风靡的是TF-IDF. 或许此刻你会十分想问,啥是TF-IDF?嗯,不捉急,在找寻这个问题的答案之前,先来看一个问题. 在一堆书籍里面,你想找寻和OOXX主题相关的资料(不要想歪),你用什么标准来判定这堆书籍里面的A比B更符合你的主题呢? 思考一分钟. 你或许会说,看一下这些书籍的名字,

展望2010年:海外最新Web相关的技术

2010 年的 Web 会是什么样,或者说,未来的 Internet 意味着什么,2010 会是值得关注的一年.本文从 5 个方面展望 2010 年的 Web,包括 HTML5,CSS3,字体服务技术:浏览器:社会媒体:JavaScript 框架:以及 SAAS. 1. CSS3, HTML5 以及 字体服务 CSS3,HTML5,以及 Typekit 一类的字体服务,将给 Web 设计师带来更多自由. CSS3 的新功能会让 Web 内容的展示变得更容易,从多背景图,到更强大的选择器,到颜色渐

《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 2.2 相关关键技术及工作原理

2.2 相关关键技术及工作原理 2.2.1 DOM DOM(Document Object Model)即文档对象模型.DOM是与系统平台和编程语言无关的W3C官方标准.W3C对DOM的定义是:"一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地对文档的内容.结构和样式进行访问和修改." DOM本质上是一个树形结构模型,它将整个页面映射为一个由层次节点组成的文档.每个节点都有一系列的子节点:每个子节点都有唯一的父节点:节点又分为元素节点和文本节点两种,元素节点中有属性

富士康指控东芝、三菱等侵犯富士康与显示面板制造相关的技术专利

全球最大的电子产品代工制造商富士康日前宣布,该公司在美国对东芝.三菱电机(Mitsubishi Electric)和船井电机(Funai Electric)三家http://www.aliyun.com/zixun/aggregation/1022.html" style="line-height: 1.6;">日本公司提起诉讼,指控它们侵犯了富士康与显示面板制造相关的技术专利. 富士康在声明中表示,上述三家日本公司侵犯了富士康大量显示面板方面的技术专利,这些显示面板被

2016年云数据中心和相关设备技术发展及分析

近日,中国信通院发布<云计算白皮书(2016年)>,其中对云数据中心和相关设备技术发展及分析如下: (一)云计算发展对数据中心和设备提出新要求 作为信息社会的重要基础设施,随着云计算.大数据等相关业务需求的持续增加,数据中心产业发展迅速,2009至2015年,中国IDC市场规模增长了5倍以上,年均增长率超过30%,2015年中国IDC市场规模已达500亿元人民币.数据中心产业也进入了大规模的规划建设阶段,2013年至2015年,全国规划在建数据中心250个左右,其中超大型.大型数据中心100个

如何学习云相关的技术

问题描述 本人想详细学习一下云相关的技术,之前学过一点hadoop,但是只是皮毛.各位大神有没有什么资料可以推荐的呢? 解决方案 解决方案二:hadoop网上有很多的视频啊,redis知识也可以学习,并行计算,mapreduce,hana内存数据库等等解决方案三:从基础学起,不要急于求成解决方案四:现在这些技术,能干什么呢?能做什么方面的应用呢?

打算做一个视频教程探讨如何自学计算机相关的技术

打算做一个视频教程探讨如何自学计算机相关的技术   第一期:如何自学SSH框架?(最好有Java基础) 第二期:如何自学Redis,Memcached和MongoDB? 第三期:如何自学PHP和Python?   想要学习的同学,留下邮箱和第几期,哪一期人数最多就先开哪个,什么时候开课了通知大家,本人没做过视频教程,到时说得不好别喷哈...   注意:具体什么时候开课还不确定(预计3月份开始),有网络有时间就做,如果你不想邮箱被别人知道,那可以直接私信我