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

其他Linux/Unix/BSD/OSX等发行版讨论
回复
aishen944
帖子: 1
注册时间: 2008-10-07 12:41

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

#1

帖子 aishen944 » 2012-03-06 19:34

潜水多年,不想忍了,:-):

一直使用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包
头像
nyfair
帖子: 1067
注册时间: 2007-12-07 12:49
系统: winnux10
来自: Tree New Bee

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

#3

帖子 nyfair » 2012-03-08 11:22

foobar2000 script + 快捷键,四海一家的解决之道
话说别用id3了,现在mp3也能用apev2tag
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的id@qq.com},将会竭诚为您服务

linux常见多媒体问题处理指南

1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在

⇩自由网络⇩
https://github.com/nyfair/freeweb
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

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

#4

帖子 adam8157 » 2012-03-08 12:46

有点点"倒行逆施"的意思

用puddletag或者easytag能很轻松的转换编码
chenxing
帖子: 152
注册时间: 2006-01-03 18:23
联系:

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

#5

帖子 chenxing » 2012-03-08 13:52

看起来不错,推荐一个我写的小工具,可以方便地改mp3的编码,确保其在Windows、Linux、手机上都不乱码
http://code.google.com/p/mp3tagiconv/

支持Windows Media Player等软件的核心是将GBK编码的流写进ID3v1,而将UTF-8编码的信息写进ID3v2,具体解释见: Mp3标签乱码问题分析与解决方案
以Wiki模式创建中文Linux文档,欢迎加入 http://linux-wiki.cn
moximoxi
帖子: 1967
注册时间: 2008-09-30 17:46

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

#6

帖子 moximoxi » 2012-03-08 17:44

chenxing 写了:看起来不错,推荐一个我写的小工具,可以方便地改mp3的编码,确保其在Windows、Linux、手机上都不乱码
http://code.google.com/p/mp3tagiconv/

支持Windows Media Player等软件的核心是将GBK编码的流写进ID3v1,而将UTF-8编码的信息写进ID3v2,具体解释见: Mp3标签乱码问题分析与解决方案
这个对症!
chexa
帖子: 1
注册时间: 2010-02-05 18:16

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

#7

帖子 chexa » 2012-04-18 16:36

你好,我在windows下读取id3信息时
TagLib::FileRef f( "path" );
path为中文路径,或者歌曲有中文名时,tag为空的,不知道是什么原因,在linux下就没有这个问题?
回复