让Deadbeef支持GBK标签,彻底解决中文乱码问题,增加歌词显示 » 荒野无灯weblog

Keep It Simple, Stupid.

荒野无灯weblog

让Deadbeef支持GBK标签,彻底解决中文乱码问题,增加歌词显示

目前Deadbeef最新版本为: 0.5.1
一,让DeaDBeeF支持GBK标签,彻底解决乱码问题
这是通过修改Deadbeef源码实现的。作者好像是俄罗斯人?里面只有对英文和俄文的判断,没有 考虑中文编码。。。
在网上看到有patch可以实现显示中文GBK字符的,不过看了它源码,发现它只是通过把cp1251修改为gbk而已。这样显示中文的确是没有问题的,但是如果是俄文等使用cp1251的语言,则会显示成乱码。从追求完美的角度来讲,这样修改有些勉强。
这里我制作了一个patch,经自己测试使用没有问题:

deadbeef-0.5.1-Chinese-GB-patch.diff (2.7 KB)


补丁应用:

cd deadbeef-0.5.1
cat ../deadbeef-0.5.1-Chinese-GB-patch.diff | patch

不想打补丁的直接下我修改好的源码吧:

deadbeef-0.5.1-modified.tar.bz2 (2.2 MB)

PS:
在我使用的Archlinux + xfce4 环境下,貌似自己下载源码编译后播放的图标没法显示,于是hack了一下(有些勉强,呵呵),如果你是用gnome或KDE那就按你自己的系统hack之了:

deadbeef-0.5.1-archlinux-gtkui-patch.diff (973 字节)

关于GB 18030(来自维基百科):

GB 18030,全称:国家标准GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版。与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。
GB 18030主要有以下特点:
與 UTF-8 相同,采用多字节编码,每个字可以由1个、2个或4个字节组成。
编码空间庞大,最多可定义161万个字元。
支持中国国內少数民族的文字,不需要动用造字区。
汉字收录范围包含繁体汉字以及日韩汉字

字节结构

  1. 单字节,其值从0到0x7F。
  2. 双字节,第一个字节的值从0×81到0xFE,第二个字节的值从0×40到0xFE(不包括0x7F)。
  3. 四字节,第一个字节的值从0×81到0xFE,第二个字节的值从0×30到0×39,第三个字节从0×81到0xFE,第四个字节从0×30到0×39。

由于GB18030是完全兼容GB2312和GBK的,因此这里我用的GB18030.

关于GBK,见:http://zh.wikipedia.org/wiki/GBK
还有GB2312 (这个是我们通常在国内那些古老的网页中最常见的):http://zh.wikipedia.org/wiki/GB_2312

要查看iconv支持的编码:

iconv -l

二,增加歌词显示
这里要用到两个插件,一个给deadbeef添加dbus支持的插件deadbeef-mpris,另一个则是显示歌词的插件lrcShow-X(基于pyqt开发)

deadbeef-mpris下载地址:http://sourceforge.net/projects/deadbeef-mpris/
https://code.google.com/p/deadbeef-mpris-plugin
目前最新版是2.1 ,下载后解压目录到deadbeef源码的plugins目录下面,然后跳转到该目录,然后:

./configure --prefix=你编译deadbeef时的PREFIX
make
sudo make install

lrcShow-X下载地址:
https://launchpad.net/lrcshow-x
下载后解压运行 lrcShow-X.py 即可。
如果没有安装过pyqt,先安装一下,不然无法运行:

sudo pacman -S python2-pyqt

好了,秀一下歌词秀吧:

背景透明歌词秀+完美中文显示:

全屏歌词显示效果:

OSD显示模式:

Tagged in : c/c++,Deadbeef,GBK,中文乱码,歌词显示,lrcShow-X,GB18030,GB2312

All Comments (0)
Gravatar image
No Comments