mp3参数解析
MP3 文件类型Id3V1,Id3V2;
ID3V1:位于文件尾部,不支持封面,不支持特殊字符了;
ID3V2: 位于文件头,支持任意长度,支持封面和特殊字符;
MP3:CBR 固定码率。和 VBR可变码率。
解析ID3V2:
第一针数据的位置在标签头和标签帧的后边;
解析标签头:
1、标签头
在文件的首部顺序记录 10 个字节的 ID3V2.3 的头部。数据结构如下:
char Header[3]; /*必须为"ID3"否则认为标签不存在*/
char Ver; /*版本号 ID3V2.3 就记录 3*/
char Revision; /*副版本号此版本记录为 0*/
char Flag; /*存放标志的字节,这个版本只定义了三位,稍后详细解说*/
char Size[4]; /*标签大小,包括标签头的 10 个字节和所有的标签帧的大小*/
2 计算标签帧大小,注意每个字节只取7位,然后向右移动也是移动7位:
例如:257 : 0000000100000001;那标签的那四个字节就是这个样子的:
0000000 00000000 00000010 00000001;
(Uint)(size(0)&0x7f <<21)+(Uint)(size(1)&0x7f <<14)+(Uint)(size(2)&0x7f <<7)+(Uint)(size(3)&0x7f );得到的就是257;所以标签头和标签帧的总大小257字节;
真正的数据,在第258字节;
3 每个标签帧都有一个 10 个字节的帧头和至少一个字节的不固定长度的内容组成;每个标签帧里也同样都有一个标签头和帧内容;内部标注了标题,歌手,专辑等信息;
4解析帧参数
frameID 4个字节;每个不同的位有不同的含义;
读这四个字节的某些位,拿到上边的结构体中的信息,然后去查表,每一段字段代表的是什么意思;譬如版本信息拿到 version = 0 ,代表MPEG2.5; layer字段的
根据得到的位率值与layer和mpeg值得对应关系,建立一个表,查表获取比特率;
根据MPEG 的type类型获取对应的采样率;
5 mp3 文件的编码一帧所用字节长度在标准文档(某些网络文档)里是有一个说明的;可以根据这个计算出编码一帧的所用的PCM长度;
MP3文件有一个标准的格式,这个格式就是包括384、576、或者1152个采样点(随MPEG的版本和层不同而不同)的帧;(图片来源百度文库)
6帧头格式:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
2021-05-25 Xcode的info.plist添加item
2021-05-25 scikit_learn 中的章节方法