毕业设计(音乐播放器)之二(MP3文件标签解析)
来源:互联网 发布:免费视频剪辑软件 编辑:程序博客网 时间:2024/06/06 07:34
目前MP3文件比较通用的标签有ID3v1,ID3V2,APEv2.
一、ID3v1位于Mp3文件的最后128个字节,其中包括:
第一部分为固定的$54 14 47,表示'TAG'这三个字符
然后30个字节的空间用来表示歌曲名,30个字节表示艺术家名,30个字节表示专辑名,4个字节表示发行年份,30个字节表示注释和备注信息,1个字节表示音乐流派
二、ID3V2就复杂一点了
ID3V2位于文件开头或者APE标签之后,就我见过的大部分都位于文件开头。
ID3V2包括一个TAG Head和很多Frame,每个Frame又由Frame Head和Frame Body构成.
1.先来看TAG Head:
ID3v2/file identifier "ID3" ID3v2 version $03 00ID3v2 flags %abc00000ID3v2 size 4 * %0xxxxxxx
TAG Head总长度为10个字节。
头三个字节固定,表示'ID3'这三个字符
然后是两个字节表示标签版本号, 如$03 00,其中第一个字节表示主版本号,第二个自己表示副版本号
然后是1个字节的标志符,头三位有效,
a位表示whether or not unsynchronisation is used
b位表示 whether or not the header is followed by an extended header
c位表示实验版
然后是4个字节用来表示Tag的大小
每个字节的左起第一位无效。4个字节就还剩下28位,可表示256M
要得到size可以用如下方式计算:
(((B1 & 0x7f << 21)|(B2 & 0x7f <<14))|(B3 & 0x7f << 7)) |(B4 &0x7f)
B1表示size的第一个字节,0x7f为十六进制的7F
这里得到的size为整个标签的total size-10.
The ID3v2 tag size is the size of the complete tag after unsychronisation, including padding, excluding the header but notexcluding the extended header (total tag size - 10)
如果有扩展头的话,扩展头结构如下:
Extended header size $xx xx xx xx Extended Flags $xx xxSize of padding $xx xx xx xx
2.Frame head结构为:
Frame ID $xx xx xx xx (four characters) Size $xx xx xx xxFlags $xx xx
同样此处的size表示的也是Frame的total size-10,
The size is calculated as frame size excluding frame header (frame size - 10).
Flag结构如下
%abc00000 %ijk00000
0 Frame should be preserved. 1 Frame should be discarded.
0 Frame should be preserved.1 Frame should be discarded.
0 Frame is not compressed. 1 Frame is compressed using [#ZLIB zlib] with 4 bytes for 'decompressed size' appended to the frame header.
This flag indicates wether or not the frame is enrypted. If set one byte indicating with which method it was encrypted will be appended to the frame header. See section 4.26. for more information about encryption method registration.
0 Frame is not encrypted. 1 Frame is encrypted.
0 Frame does not contain group information 1 Frame contains group information
3.Frame Body的第一个字节为字符编码字节。
- 毕业设计(音乐播放器)之二(MP3文件标签解析)
- android Mp3播放器之Mp3 ID3V2 、ID3V1标签解析
- android Mp3播放器之Mp3 ID3V2 、ID3V1标签解析
- 音乐播放器之源码解析二
- Unity播放音乐(MP3)
- 安卓MP3播放器开发实例(2)之音乐播放
- 毕业设计(音乐播放器)之三(大端、小端)
- 毕业设计(音乐播放器)之一(界面设计)
- Android应用开发--MP3音乐播放器代码实现(二)
- Android应用开发--MP3音乐播放器代码实现(二)
- Android应用开发--MP3音乐播放器代码实现(二)
- Android应用开发--MP3音乐播放器代码实现(二)
- MP3音乐播放器
- Linux下Rhythmbox等音乐播放器MP3文件中文标签乱码另类彻底解决办法
- 安卓MP3播放器开发实例(1)之音乐列表界面
- Android应用开发--MP3音乐播放器界面设计(1)
- Android应用开发--MP3音乐播放器界面设计(2)
- Android应用开发--MP3音乐播放器界面设计(1)
- SQL 半角与全角之间转换
- 查询表的所有字段名
- iOS: How to use "Block"
- base64相关处理
- 说说java的自动装箱(autoboxing)和拆箱(unboxing
- 毕业设计(音乐播放器)之二(MP3文件标签解析)
- GIS数据资料
- SQL Server 2012可编程性新特性_4_WITH RESULT SETS
- C#中Hashtable 的使用,最终实现书签跳转功能
- oracle嵌套表
- 数据导入,改变时间类型
- java中String类常用的一些方法
- 织梦 调用文章第一张图片 非缩略图
- MANETSimulator developing diary