Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1757539
  • 博文数量: 293
  • 博客积分: 10574
  • 博客等级: 上将
  • 技术积分: 5085
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-22 17:00
文章分类

全部博文(293)

文章存档

2011年(27)

2010年(84)

2009年(62)

2008年(120)

我的朋友

分类: LINUX

2009-12-11 11:16:03

一、拿来主义

如果你急着看电影,那就参照如下命令打开电影即可正常显示字幕:

mplayer -sub name_of_movie.srt -subcp cp936 -font /usr/share/fonts/truetype/arphic/gkai00mp.ttf name_of_movie.avi

注意:

  • -sub 后是字幕文件 -subcp 后是字幕文件的编码格式 -font 后是支持中文的字体文件
  • 另外,还须保证字幕文件的编码格式必须与-subcp选项指定的编码格式一致(可以使用iconv在各编码之间转换)。
  • 这四者缺一不可。

二、命令行参数

如果你通过上面的命令还没解决字幕乱码的问题,那请耐心地看完下面的内容,然后根据自己的具体情况做相应的调整,应该可以看到正常的字幕了。如果还是乱码,那请留言,我们一块来讨论解决。

1.字幕文件

要让mplayer显示字幕,须得有个正确的字幕文件。如果下载电影时没有字幕文件,可以去shooter.cn上去搜索下载。

一般网上下载的字幕文件都是cp936的编码格式。如果不是,可以用iconv转换。比如utf8的转换成cp936的,命令如下:

iconv -f utf8 -t cp936 -o name_of_movie.cp936.srt name_of_movie.utf8.srt

有了字幕文件,那须告诉mplayer使用哪个字幕文件。可以用-sub选项。

2.指定字幕文件的编码格式

其实,也可不用转换字幕文件的编码格式,而用mplayer的命令选项-subcp 告诉mplayer字幕文件是什么编码格式。

3.指定字幕使用的字体

如果上面两个选项都正确地指定后,字幕还是乱码,那就应该是字体的问题了。可能mplayer默认的字体文件(~/.mplayer/subfont.ttf)不支持字幕的所使用的语言(比如中文)。那就须用-font指定一个支持中文的字体。我一般使用字体/usr/share/fonts/truetype/arphic/gkai00mp.ttf

三、配置文件

经过以上三步,在命令行下启动mplayer看电影应该可以看到正常的字幕了。

但每次都输入这么长的命令确实很麻烦。下面把这些选项写入配置文件,那样就可以直接mpalyer some.avi或直接鼠标右键“用mplayer打开”啦。

1.两个执行文件、三种启动方式和四个配置文件

首先,我们需要知道的是:两个执行文件、三种启动方式和四个配置文件。两个执行文件是mplayer和gmplayer;三种启动方式是用mplayer命令、用gmplayer命令和鼠标右键;四个配置文件是/etc/mplayer/mplayer.conf、 /usr/local/etc/mplayer/mplayer.conf、 ~/.mplayer/config 和 ~/.mplayer/gui.conf。

其中,鼠标右键最终调用的可能是mplayer也可能是gmplayer,我这里这两种都存在,即右键菜单里有两个名为“用mplayer打开”的项目。

对于配置文件,前两个配置文件是全局的,不一定都存在。优先级最低。可以不去管它。

~/.mplayer/config 可用于mplayer和gmplayer。

~/.mplayer/gui.conf只用于gmplayer。所以,很多人在这个配置文件了修改了选项,而还是用mplayer启动的话,是不起作用的。

它们的关系如下表:

优先级 配置文件 mplayer gmplayer
/usr/local/etc/mplayer/mplayer.conf
使用 使用
/etc/mplayer/mplayer.conf 使用 使用
~/.mplayer/config 使用 使用
最高 ~/.mplayer/gui.conf   使用

所以,如果你习惯用mplayer那就修改~/.mplayer/config,如果你习惯用gmplayer那就修改~/.mplayer/gui.conf。最好是同时修改这两个配置文件,而不动那两个全局的配置文件。

2.修改~/.mplayer/config

先来修改~/.mplayer/config。加入以下两项:

subcp = "cp936"
font = "/usr/share/fonts/truetype/arphic/gkai00mp.ttf"

由于不同电影的字幕文件不同,所以不能在配置文件里指定字幕文件。下面会提到如何让mplayer自动识别字幕文件并加载。这里我们指定字幕文件的编码格式为cp936,所以,你必须把下载来的字幕文件转换成该编码格式。对于字体,你可以选一个自己喜欢的中文字体即可。

3.修改~/.mplayer/gui.conf

然后修改~/.mplayer/gui.conf。如下:

sub_cp = "cp936"
font_name = "/usr/share/fonts/truetype/arphic/gkai00mp.ttf"

可见,同样是配置文件,相同的配置项目的名字却是不一样的。这个要注意,别弄混了。否则mplayer会抱怨“Warning unknown option sub_cp at line 3”之类的,并且字幕依然乱码。

字幕文件的编码格式、字幕的字体都准备好了,剩下的就是让mplayer找到相应的字幕文件了。

4.让mplayer自动识别字幕文件并加载

最简单的就是修改字幕文件,使其与电影同名(不包括最后的扩展名)。

有时我们下载到的字幕文件是形如name_of_movie.chs.srt、name_of_movie.cht.srt文件。如果每次都要修改字幕文件的文件名,确实有点麻烦。其实我们可以用下面的方法让mplayer更智能的。

在配置文件~/.mplayer/config中加入下面两行:

slang = "chs,cht,eng"
sub-fuzziness=1

第二行的意思是,搜寻字幕时调整匹配模糊度:0为精确匹配(字幕文件的名字必须与电影文件名完全匹配,不含扩展名);1为装载所有包含电影名称的字幕(含slang 所指定语言的优先级更高);2为装载当前目录的所有字幕。

第一行的意思是,字幕文件名中含有chs字样的(如name_of_movie.chs.srt)被优先选用,其次是name_of_movie.cht.srt,然后是name_of_movie.eng.srt,如果这些都没有,再找其他的文件名中含有电影文件名的字幕文件。

5.针对gmplayer

另外对于gmplayer,在配置文件~/.mplayer/gui.conf中还有如下两项需要修改或注意:

sub_auto_load = "yes"
sub_unicode = "yes"

这两项可以直接修改配置文件,也可以通过图形界面来修改。方法如下:

在GMPlayer上点右键,

  • Preferences -> Subtitle & OSD
    • Encoding处选择 Simplified Chinese charset (CP936);
    • 勾选“Unicode subtitle”;
    • 取消勾选“Disable subtitle autoloading”;
  • Preferences -> Font
    • 在Font 处输入字体文件的完整路径(如/usr/share/fonts/truetype/arphic/gkai00mp.ttf);
    • 在 Encoding处选择 Unicode。
 
#############################################################################
 
 
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
播放的效果是一样的!所以通过这种方法也可以判断你新添加的配置选项是否合法!
阅读(148536) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~