MP3编码分析

本文深入解析MP3文件格式,包括MP3文件结构、ID3标签和编码过程。详细介绍了帧头结构、编码输入输出、SHINE程序分析,涉及子频带滤波器、MDCT变换、Huffman编码等关键技术。通过对MP3文件实例的剖析,展示了MP3编码的全过程。
摘要由CSDN通过智能技术生成

一、MP3文件格式解析

1MP3文件及MPEG概述

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

MPEG(MovingPictureExperts Group)MPGE音频层指MPGE文件中的声音部分,根据编码质量和复杂程度分为3层,即Layer-1Layer2Layer3,对应MP1MP2MP3三种格式文件。

2MP3文件结构

MP3文件分为TAG_V2(ID3V2)Frame, TAG_V1(ID3V1)3部分。

1Frame格式

帧头为4个字节,其结构如下

typedef FrameHeader

{

unsigned intsync:11;           //同步信息

unsigned intversion:2;          //版本

unsigned intlayer:2;            //

unsigned intprotection:1;        // CRC校验

unsigned intbitrate:4;           //位率

unsigned intfrequency:2;        //采样频率

unsigned intpadding:1;          //帧长调节

unsigned intprivate:1;           //保留字

unsigned intmode:2;            //声道模式

unsigned int mode extension:2;    //扩充模式

unsigned intcopyright:1;          // 版权

unsigned intoriginal:1;            //原版标志

unsigned intemphasis:2;          //强调模式

}

HEADER, *LPHEADER;

无论帧多长,每帧播放时间为26msMAIN_DATA长度为

Length(MAIN_DATA)=((version==MPEG1)?144:72)*bitrate / frequency + padding;

2ID3V1格式

ID3V1存放在MP3文件结尾,共128Bytes,各项信息都顺序存放,不足部分使用’\0’补足,可使用UltraEdit打开查看。

typedef struct tagID3V1

{

char Header[3]; /*标签头必须是"TAG"否则认为没有标签*/

char Title[30]; /*标题*/

char Artist[30]; /*作者*/

char Album[30]; /*专集*/

char Year[4]; /*出品年代*/

char Comment[28]; /*备注*/

char reserve; /*保留*/

char track;; /*音轨*/

char Genre; /*类型*/

}

ID3V1,*pID3V1;

3ID3V2格式

ID3V2存放在MP3文件的首部,由1个标签头和若干标签帧组成。

标签头为10个字节,

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

char Ver;                /*版本号

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值