LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 385|回复: 5

改造taglib彻底解决amarok等kde下音乐播放程序播放mp3时的中文乱码问题!

[复制链接]
发表于 2012-3-6 19:27:34 | 显示全部楼层 |阅读模式
好久没有来linuxsir了,想念大家了,废话少说,上正事^_^


一直使用linux系统,但是作为一个中文用户,mp3乱码问题始终困扰着我,在amarok早期版本中其是支持非标准的id3v1/2的编码,但可惜的是其在新近的后续版本中去掉了这个功能,如果想要支持中文有以下几个解决方法:

1, 对于id3v1的mp3文件  如果不改动底层支持是无论如何都不会支持中文的, 因为该标准制定时根本就不支持中文语系的编码

2,   使用工具逐一修改mp3的id3v2的信息使其符合标准, 也就是说每下载一首mp3都要去修改,因为现在桌面是windows的天下,非标准的mp3格式还是占据了主流



今天花了半天时间研究了下taglib库的mpeg/id3v1/id3v2的实现,顺便对其进行深度改造使其支持非标准的mp3 id3v1/id3v2编码,增加了大约200行代码左右,思路如下:

1, 首先尝试使用TAGLIB_COMPAT_ENCODING环境变量定义的编码

2,    如果没有设置以上的环境变量尝试使用当前系统默认的字符编码

3,    如果转码失败则尝试使用GBK编码

4,   如果全部失败则使用taglib原始编码


理论上改动不会对原始的taglib流程及编码造成任何影响,已经在archlinux上的amarok测试通过, 项目地址是:

http://code.google.com/p/taglib-mod/


你可以在项目主页上下载修改过的taglib原始代码, 也可以选择下载针对taglibv1.7的patch补丁,也可以下载针对archlinux的AUR包
发表于 2012-3-7 10:09:03 | 显示全部楼层
其实
id3v1用gbk编码 id3v2用utf8 linux和windows下都通用
很多播放器都支持自动改标签的 如deadbeef
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-7 10:31:04 | 显示全部楼层
id3v1 在taglib这种严格遵守标准的情况下  支持中文是不可能了    看里面的代码就知道了

只看到向amarok这样的程序自带了可以修改标签的功能  但是还没用过自动改标签的播放器.
回复 支持 反对

使用道具 举报

发表于 2012-3-7 10:46:00 | 显示全部楼层
关注一下。谢谢。
回复 支持 反对

使用道具 举报

发表于 2012-3-8 20:43:18 | 显示全部楼层
easytag 改一遍就是了,一劳永逸
回复 支持 反对

使用道具 举报

发表于 2012-3-9 00:01:21 | 显示全部楼层
gnome用户表示amarok压力很大!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表