Linux下mplayer加载中文字幕乱码解决方案

来源:互联网 发布:淘宝退货没退款怎么办 编辑:程序博客网 时间:2024/03/29 14:16

转自:http://hi.baidu.com/wzc0066/blog/item/2b6ac3f622a4c62e730eec2a.html

 

Mplayer播放器的强大性这里就不多说了,在Linux下浏览多媒体使用的基本都是它!我使用mplayer也有很长 一段时间了,但一般下载的多媒体字幕都是内嵌的,所以也就没怎么碰到过字幕加载的问题!但这两天下载的一个视频文件是有字幕的,于是字幕加载乱码的问题就 出现了……

虽然说网络上可以搜到很多相关的帖子,但要从中找到一份切实可行的提供解决方案却还是得需要花点时间!下面是本人经过实践找到的一种切实可行的解决方案!

几点说明:

  • 关于字幕文件加载的常识:将字幕文件与视频文件的名称改成一样,但得保留各自的扩展名不变;然后将它们放在同一目录下,这样播放视频的时候就会自动加载其对应的字幕文件了!
  • gmplayer 与mplayer的关系:gmplayer是mplayer的一种图形化显示,通过双击播放使用的就是gmplayer;mplayer只能通过命令行使 用;gmplayer仅比mplayer多了个图形界面而已,实质都是一个东西!gmplayer对应的配置文件是~/.mplayer /gui.conf;mplayer对应的配置文件是~/.mplayer/config (我系统里的config文件是播放视频时自动生产的一个空文件)!
  • 字 幕文件的编码说明:网上有人说如果加载字幕出现乱码问题,用gedit将字幕文件打开,然后另存为utf8格式的就可以识别了!网络上获得的中文字幕文件 大多是在windows下编辑的,编码格式是gb18030或gbk,这里需要说明的是还是保留其原编码格式,实践表明,如果改成了utf8编码,则下面 的方法反而不适用了!



一、解决gmplayer的字幕加载问题

有两种解决方法:

(1) 修改配置文件
打开配置文件~/.mplayer/gui.conf,然后找到如下配置选项(没有的可自行添加),并修改如下:

代码:
sub_auto_load = "yes"
sub_unicode = "yes"
sub_pos = "100"
sub_overlap = "no"
sub_cp = "cp936"
font_factor = "0.750000"
font_name = "/usr/share/fonts/truetype/arphic/uming.ttf"
font_encoding = "unicode"
font_text_scale = "3.000000"
font_osd_scale = "6.000000"
font_blur = "2.000000"
font_outline = "2.000000"
font_autoscale = "3"

sub_cp表明使用的中文编码;font_name指定了字幕使用的中文字体,也可以选择其它的,自己到/usr/share/fonts/下面去找;font_text_scale指定字幕字体的大小,默认的是5,感觉有些大!

(2) 图形界面配置
在gmplayer点右键, 修改Preferences -> Subtitle & OSD -> Encoding,选择 Simplified Chinese charset (CP936);修改Preferences -> Font, 在 Font 处选择你使用的字幕字体文件(也就是/usr/share/fonts/truetype/arphic/uming.ttf了),在 Encoding 处选择 Unicode!

二、解决mplayer的字幕加载问题

打开配置文件~/.mplayer/config,然后找到如下配置选项(没有的可自行添加,我的压根就是空的,所以直接添加了),并修改如下:
代码:
subcp = "cp936"
subfont-encoding = "unicode"
font = "/usr/share/fonts/truetype/arphic/uming.ttf"
subfont-text-scale = "3.000000"

参照gmplayer配置文件的解释,应该很容易理解这几个选现各自的意义!但需要的注意的是,这两个配置文件的写法是不一样的,我就是在这里耗很多时间,被网上的帖子给误导了,很多给的都是与gmplayer配置文件的写法一样,所以怎么试验都是不行!

其实这里有个技巧,就是这几个配置选项其实都可以作为mplayer在命令行下参数来使用!之所以将它们写到配置文件里,就是为了避免每次都得在命令添加这些参数!如果将这几行都注释掉,则使用命令:
代码:
mplayer xxx.avi -subcp cp936 -subfont-encoding unicode -font /usr/share/fonts/truetype/arphic/uming.ttf -subfont-text-scale 3

播放的效果是一样的!所以通过这种方法也可以判断你新添加的配置选项是否合法!

如果还有其它更好更全的解决方法,欢迎大家探讨!

补充几点:

对于在Linux下用gedit都无法打开的字幕文件,则上述方法是无能为力的!
可以先到windows环境下用文本编辑器打开,另存为utf8格式,然后到Linux下再用gedit打开并另存为gb18030即可!

无论在配置文件还是命令行参数中:
(1) 如果使用选项-subcp cp936,则字幕文件必须另存为gb18030格式,否则字幕是不会正确显示的!
(2) 如果使用选项-subcp utf8,则字幕文件必须另存为utf8格式,否则字幕也是不会正确显示的!

因为utf8在Linux环境下更通用,所以建议大家还是应该使用第(2)种对应关系比较好!

在上面的配置选项中:

font_name = "/usr/share/fonts/truetype/arphic/uming.ttf"和
font = "/usr/share/fonts/truetype/arphic/uming.ttf" (本质意义是一样的)
都是指明字体的配置选项,就是直接指向到字体文件!

其实还有一种配置方式,就是指定字体名称!如以文泉驿字体为例,则上面的配置就变成了:
font_name = "WenQuanYi Bitmap Song"和
font = "WenQuanYi Bitmap Song"
这种配置方式好像更简单一些!

每种字体都有其自己的名称的,可以到系统->首选项->字体配置程序里查找各种字体的名称!