回 帖 发 新 帖 刷新版面

主题:[原创]修改mp3附加信息的代码

修改mp3附加信息的代码

 

  说明:如果你想在自编的播放器中增加这个功能,或者有兴趣自己动手做实验,请接着往下看;否则,可就此打住,以免耽误你的宝贵时间,而且,网上有现成的软件下载。
  问题的来由是:我有个苹果公司的iPod,只比一元硬币的直径大一点儿,厚约6mm,黄澄澄的颜色,音质非常好,我爱不释手。但这玩艺儿必须要用苹果的专用软件(同步器)来添加或删除媒体文件,问题就产生了:在该软件的一些栏目中出现了乱码字,十分地不爽。经过分析,发现这个同步器它首先调取 mp3 的 ID3V2 信息,如果没有 ID3V2,再调取 ID3V1 信息,如果也没有ID3V1,才调取文件名作为标题(该行别的栏目就是空白了)。然而有的 mp3 的 ID3V2 信息使用了 UTF-8编码,这个同步器没有分辨和转换编码的能力,所以就产生了令人烦恼的乱码。于是我就想将自己硬盘上的 mp3中的附加信息都修改为常用的 Ansi 码,但我又不想用别人的软件,自己动手编个小程序,岂不快哉?
  附件中的窗体你可以单独作为一个小软件使用,也可以添加到你自编的播放器中。ID3V2 的标签项目太多,我只选择了其中最常用的 8 项,当然,你如有兴趣,可以自行添加项目(据说 ID3V2 最大长度可达 256M)。本代码自动识别并转换 UTF-8 编码,不过,由于有的 ID3V2 信息使用了 UTF-16LE或UTF-16BE 或 ISO-8859-1编码,显示出来仍然是乱码,这几种编码我都没有涉猎,无法转换,如果你有过研究,还望不吝赐教。
  关于 ID3V1 和 ID3V2 信息的详情,请参看我以前发表的《mp3文件的数据结构》一文。

2012.12.4

回复列表 (共3个回复)

沙发

在网上学习了一下,原来所谓的UTF-16LE编码实际上就是Unicode编码,而UTF-16BE码不过是将Unicode码的两字节顺序颠倒而已。
于是对本代码进行了修改,现在已经可以做到基本上无乱码显示了。
新的源代码请到163信箱去下载(新代码已进行了优化和改进),帐号:vb62012,密码:vb620121111

板凳

看了此贴菜鸟又涨姿势了

3 楼

一江秋水老师的代码可以整理成书出版了。VB编程之数据结构与算法

我来回复

您尚未登录,请登录后再回复。点此登录或注册