ID3

MP3

英文描述中文描述标志
Album/Movie/Show title专辑/电影/节目标题TALB
Lead performer(s)/Soloist(s)指挥, 主唱TPE1
User defined text information frame自订文字TXXX
Part of a setPart of a setTPOS
Title/songname/content description标题TIT2
Track number/Position in set曲目TRCK
Attached picture封面APIC
Year年分TYER
Content type内容类型TCON
Copyright message版权信息TCOP
Comments评论COMM
User defined URL link frame自定义URLWXXX
Encoded by编码者TENC
Beats per minute (BPM)量度音乐速度TBPM

Vorbis

flac

ogg

组成: tag + streamInfo + other block

tag: 4字节, fLaC

注意字节与bit之间的转换关系. Buffer中是字节, 一个16进制的两位数, 转换成8位2进制的数

metadata block:

  1. Header包含内容:
描述长度(bit)
last, 表示是否是最后一个1 bit
type
0: StreamInfo
1: Padding
2: Application
3: SeekTable
4: VorbisComment
5: CueSheet
6: Picture
7-126: Reserved
127: Error
7 bit
block size: 本块的大小24 bit (3 bytes)
  1. StreamInfo
描述长度
minBlockSize16 (2)
maxBlockSize16 (2)
minFrameSize24 (3)
maxFrameSize24 (3)
sampleRate (Hz)20 bit
channel - 1(声道数减一)3 bit
sampleBit - 1(采样位数(?)减一)5 bit
totalSample 一个声道的采样总数36 bit
md5128 bit (16 bytes)
  1. padding

    这个只是用来对齐, 没用任何内容, 长度是8的倍数(bytes)

  2. Application

    描述大小
    应用程序id32 (4)
    应用程序数据N (8的倍数, 从header中获取到的size减去4)
  3. SeekTable

    注意, 这里面有多个SeekPoint

描述 (SeekPoint内的数据)大小
目标帧中第一个sample的序号64 (8)
相对于第一帧的偏移64 (8)
目标帧的采样数16 (2)
  1. Vorbis Comment

    含有的注释, 这个只能是获取string, 因为内部的信息不是统一的(大概率是utf-8)

    这里面含有一些专辑, 歌曲名, 歌手等信息, 需要通过字符串匹配或者其他手段去解析

  2. CueSheet

    不想写这个, 没多大用

  3. Picture

描述大小
类型(同id3)32 (4)
mime的长度32 (4)
mimeN
描述的长度32 (4)
描述 utf-8N
宽度 可能不写32 (4)
高度32 (4)
颜色深度32 (4)
索引图使用的颜色数目32 (4)
数据长度32 (4)
图片数据N