|
|
本来要首发我自己的blog的,结果网速太慢上不去 这个我原创的小脚本可以解决XMMS, BMP等mp3播放器播放清单乱码的问题。
===
该PHP脚本主要是借助于id3v2将MP3的id3 tags V2由big5或者gbk转换为utf-8格式。
utf-8格式的mp3广泛应用于使用编码的系统如Linux和苹果MacOSX的itune中。在这些系统中
看PC下采用GBK或者UTF-8编码的mp3文件信息简直一塌糊涂。
这方面做的比较好的程序有MacOSX下的ID3Mod,请参看:
渤麦堂: ID3Mod帮助解决PC编码MP3在MacOSX上的乱码问题
http://www.sinomac.com/modules/news/article.php?storyid=846
但是问题在于有的mp3文件的id3tags的编码为GBK,有的为BIG5,没法一锅端;甚至还有的mp3文件由于中途经过了一些不完整的转码器的转码,可能出现歌名为GBK编码,专辑名为BIG5码的情形,确实很棘手。而且我不太喜欢GUI的方式做这些琐事 ;)
我的方法是借助Linux下命令行界面的id3v2程序,将mp3的id3tags V2主要部分读出至文件>,同时分别将原编码视为GBK和BIG5两种情况尝试转码为UTF-8。编辑该文件,很容易看出哪
种方式是正确的,删除错误的之后写回原MP3。
该PHP脚本在命令行(shell)下使用;同时需要你系统已装好id3v2程序。
下载:http://id3v2.sourceforge.net
使用方法:
[1]读取id3tags信息
./mp3_read.php <dir/name/with/slash/>
将指定目录下mp3文件的id3tags信息输出至标准输出(stdout)。注意目录名要带最后的斜线
。如果是当前目录就指定"./"。
使用范例:
./mp3_read.php /usr/local/share/mp3/ > mp3_tags
注. 我的PHP之所以能这样执行,是在第一行设置了:
#!/usr/local/bin/php
并且chmod至可执行。
也可采用
php mp3_read.php ....
的方式运行。
[2]编辑mp3tags信息
此时可以用文本编辑器打开mp3tags文件,格式如下(此为其中一个文件的信息):
=== cut ===
FILE: /usr/local/share/mp3/梁静茹·美丽人生/01.mp3
TIT2: 01-Beautiful
TIT2: 01-Beautiful
TPE1: Www.HearFish.CoM
TPE1: Www.HearFish.CoM
TALB: 美丽人生
TALB: 藝璨汜
=== cut ===
FILE 文件名
TIT2 歌曲名称
TPE1 演唱者
TALB 专辑名称
请不要对FILE: 一行进行改动。
TIT2,TPE1,TALB这三个属性可能含有一组或者两组:一组表示我已经通过iconv侦测出正>确的转码;两组表示不清楚哪组为为正确的编码,于是我将两组都转码为UTF-8格式,请手>工删除其中错误的一组。同时也可以编辑错误的信息。比如上面的例子修改后为:
=== cut ===
FILE: /usr/local/share/mp3/梁静茹·美丽人生/01.mp3
TIT2: Beautiful 美丽人生
TPE1: 梁静茹
TALB: 美丽人生
=== cut ===
请注意保留两组MP3信息间的空行。如果某个Mp3文件想跳过修改,请直接删除它的那组信息
。
[3]生成更新mp3文件的id3tags信息的脚本
./mp3_write.php <input_tag_file>
根据上一步生成的mp3tags文件的内容生成更新mp3文件的id3tags信息的脚本,输出至标准>输出。
使用范例:
./mp3_write.php mp3_tags > mp3_update
脚本中还包含将mp3文件扩展名都转化为小写的功能。
[4]校验无误后写入
请注意检查mp3_update中是否存在错误,之后执行写入:
sh mp3_update
请小心检查并做好备份,本人不对转换过程中出现的问题负责 在次前提下Enjoy yourself~ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|