买了台iPod,发现用iTunes有很多局限性和限制,所以想自己写一个程序来取代iTunes传输歌曲。自然就要了解iTunesDB的格式啦:
iTunesDB文件的结构:
mhdb(文件描述) mhsd(列表记录) mhlt(歌曲列表记录) mhit (歌曲1描述) mhod (标题) mhod (路径) mhod (专辑) mhod (类型) ... mhit (歌曲2描述) mhod (标题) mhod (路径) mhod (专辑) mhod (类型) ... mhsd (列表记录) mhlp (播放列表) mhyp (所有歌曲播放列表) mhod (Type=100,标准数据) mhip (歌曲索引=1) mhod (Type=100) mhip (歌曲索引=2) mhod (Type=100) ... mhyp (用户定义的播放列表) mhod (Type=100) (标准数据) mhod (Type=1) (标题) mhip (歌曲索引=2) mhod (Type=100) 具体描述如下1. mhdb(文件描述,每个iTunesDB只包含一条mhdb记录) 1~4 标示符('mhdb':文件头4个字节,用来标示改文件是iTunesDB的格式,值固定为 'mhdb' 5~8 记录长度:32位整数(4字节),截止到第一条子记录(mhsd)的长度。 9~12 文件长度:32位整数(4字节),文件长度。 13~16 未知:32位整数(4字节),值通常为 1 17~20 未知:32位整数(4字节),值通常为 1 21~24 子记录数:32位整数(4字节),值通常为2,指出文件包含的 mhsd 记录数。 结束符:null(ACSII码 0)2. mhsd(包含歌曲列表或包含播放列表的头部描述) 1~4 标示符('mhsd':值固定为 'mhsd' 5~8 头部长度:32位整数(4字节)。 9~12 数据长度:32位整数(4字节),包括头部及所有子记录(mhlt或mhlp)的长度! 13~16 索引值:32位整数(4字节),值唯一。 结束符:null(ACSII码 0)3. mhlt(歌曲列表的头部描述) 1~4 标示符('mhlt':值固定为 'mhlt' 5~8 头部长度:32位整数(4字节)。 9~12 数据长度:32位整数(4字节),包括头部及所有子记录(mhit)的长度! 结束符:null(ACSII码 0)4. mhit(歌曲描述) 1~4 标示符('mhit'):值固定为 'mhit' 5~8 头部长度:32位整数(4字节)。 9~12 数据长度:32位整数(4字节),包括头部及所有子记录(mhod)的长度! 13~16 子记录数(mhod):32位整数(4字节)。 17~20 歌曲标识(唯一):32位整数(4字节)。 21~24 未知:4字节。值通常为 1 25~32 未知:8字节。值通常为 0 33~36 歌曲文件最终修改时间:4字节 37~40 歌曲文件长度 41~44 歌曲时间:32位整数(4字节)。单位:毫秒 45~48 歌曲音轨:32位整数(4字节),例如: 1,2,3... 49~52 专辑总音轨数:32位整数(4字节) 53~56 歌曲年代:4字节 57~60 歌曲速率:4字节 结束符:null(ACSII码 0)