VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 17869|回复: 36

MP3之ID3v1,ID3v2.3结构读/写模块(开源) (申精)

[复制链接]
 楼主| 发表于 2007-5-9 23:13:30 | 显示全部楼层 |阅读模式
今日研究了MP3文件结构.  做了一个读写MP3之ID3v1 和 ID3v2 的模块.

    MP3文件的“ID3v1信息”。这个信息结构提取起来非常容易,写入到文件也不是什么难事。但是它的信息安排和可扩展性却非常之差(只能128个字节)。就如你所知,MP3文件还有另外的一个信息结构,这个结构具有更好的可扩展性,而且存储的容量也不受限制(也就是总长度不固定)。这个信息就是 ID3v2信息(相对ID3v1而言)。由于ID3v1信息存储在了文件的最后128个字节里,那么ID3v2就不得不放弃选择存储在文件的末尾了,于是它被存储在了文件的起始位置。

     ID3v2信息的存储和读取远远要比ID3v1信息复杂的多。这是因为ID3v2信息不再固定,而且由于这段信息存储在了文件的首端,所以重新写入的时候也远比ID3v1麻烦的多。

     我用尽可能清楚而且简练的话,给大家讲一下ID3v2信息的读取方法。ID3v2到现在一共有4个版本,不过比较流行的MP3播放软件一般只支持第3版,即ID3v2.3。我们要读取的就是ID3v2.3信息。ID3v2信息包括两个部分,一个部分是标头信息,另一个部分是标体信息。其中标头信息占固定的十个字节,

    每个ID3V2的标签部一个标签头和若干个标签帧或一个扩展标签组成关于曲目的信息如标题、作者等都放在在不同的标签帧中,扩展标签头和标签帧关不是必要的,但每个标签至少要有一个标签头和标签帧一直顺序存放在MP3文件首部。


附:

FrameID 帧标:用四个字符标识一个帧的内容含义,常用的对照如下:

TEXT: 歌词作者
TENC: 编码
WXXX: URL链接(URL)
TCOP: 版权(Copyright)
TOPE: 原艺术家
TCOM: 作曲家
TDAT: 日期
TPE3: 指挥者
TPE2: 乐队
TPE1: 艺术家相当于ID3v1的Artist
TPE4: 翻译(记录员、修改员)
TYER: 年代相当于ID3v1的Year
USLT: 歌词
TALB: 专辑相当于ID3v1的Album
TIT1: 内容组描述
TIT2: 标题相当于ID3v1的Title
TIT3: 副标题
TCON: 流派(风格)相当于ID3v1的Genre见下表
TBPM: 每分钟节拍数
COMM: 注释相当于ID3v1的Comment
TDLY: 播放列表返录
TRCK: 音轨(曲号)相当于ID3v1的Track
TFLT: 文件类型
TIME: 时间 
TKEY: 最初关键字
TLAN: 语言
TLEN: 长度
TMED: 媒体类型
TOAL: 原唱片集
TOFN: 原文件名
TOLY: 原歌词作者
TORY: 最初发行年份
TOWM: 文件所有者(许可证者)
TPOS: 作品集部分
TPUB: 发行人
TRDA: 录制日期
TRSN: Intenet电台名称
TRSO: Intenet电台所有者
TSIZ: 大小  
TSRC: ISRC(国际的标准记录代码)
TSSE: 编码使用的软件(硬件设置)
UFID: 唯一的文件标识符
AENC: 音频加密技术




希望管理员加分给我.  因为这个模块确实花费了很多心血才完成. 现在正在研究怎么读取MP3文件格式. OK 还会发上来供大家学习.

mod_getmp3Info.rar

7.5 KB, 下载次数: 1031

vb

评分

参与人数 10威望 +56 人气 +2 收起 理由
a8888123 + 2 + 2 谢谢。
cienly + 2 好东西。
yinghao2005 + 3 我很赞同
炉子 + 2 我很赞同
xuxil + 1 我很赞同
irX26 + 5
squall0815 + 1 我很赞同
云昭龙 + 5 发布源码
410023425 + 30 原创内容 发布源码 精神可嘉
sgdjr2003 + 5 我很赞同

查看全部评分

本帖被以下淘专辑推荐:

发表于 2007-5-10 12:11:06 | 显示全部楼层
我不是管理员,但我很赞同. ,所以我加分了.
回复 支持 反对

使用道具 举报

发表于 2007-5-10 16:13:51 | 显示全部楼层
还有一种ID3标签,被安排在了文件中间,或不固定位置
具体什么好处就忘了,研究过一阵MP3文件结构,想写一个播放类,但发现MP3文件
够复杂于是放弃了。。。
回复 支持 反对

使用道具 举报

发表于 2007-5-10 20:56:39 | 显示全部楼层
这个,这帖子不顶不行。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 22:34:18 | 显示全部楼层
谢谢大家哦.  

给我加了这么多威望了. 呵呵.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-10 22:39:36 | 显示全部楼层
原帖由 云昭龙 于 2007-5-10 12:11 发表
我不是管理员,但我很赞同. ,所以我加分了.


想必这种标签就是所谓的APEv2吧.  我也研究过这个了.  发现大多数这种标签也都是在文件尾部, 在ID3v1之前就是了.  以字符串"APETAGEX"为标记.

千千静听就支持这种标签.  这个我会在模块中加上去的.

很感谢给我加的分.
回复 支持 反对

使用道具 举报

发表于 2007-5-11 16:12:33 | 显示全部楼层
原帖由 PctGL 于 2007-5-10 16:13 发表
研究过一阵MP3文件结构,想写一个播放类,但发现MP3文件
够复杂于是放弃了。。。


你不会是想解析MP3的字节流,然后在每一个采样时间控制声卡发出某种频率的声音吧?
回复 支持 反对

使用道具 举报

发表于 2007-5-11 16:14:34 | 显示全部楼层
这么好的帖子不顶不行!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-11 18:16:27 | 显示全部楼层
为什么贴子不以再编辑了.  提示说超过120分钟?  

这个 限制好像不太好吧. !
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-11 18:19:59 | 显示全部楼层

模块更新

这两天对模块做了一些优化. 并且加上了读取MP3文件信息的功能( 但对个别的MP3文件读取会不准确, 可以读取WMA文件的一些信息. 还在完善中. )

请下载下面的文件:

[ 本帖最后由 yangyxd 于 2007-5-11 18:29 编辑 ]

附图

附图

mod_getmp3Info.rar

10.97 KB, 阅读权限: 5, 下载次数: 242

模块

fileinfo.rar

55.15 KB, 阅读权限: 5, 下载次数: 243

示例程序

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2020-6-5 20:24

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表