分类: LINUX
2009-11-14 03:12:17
MPlayer下的字幕播放设置 | |
来源: ChinaUnix博客 日期: 2009.02.11 08:58 (共有1条评论) | |
摘要 MPlayer是一款优秀的视频播放软件,它支持现在的大多数视频格式,是在linux下播放视频的不错到选择。由于MPlayer在字幕播放上有着诸多到问题,本文将试图介探讨在MPlayer正确地显示中文字幕。 本文所采用到方法在fedora9,10以及freebsd7.0,7.1英文界面下测试通过。 一、安装MPlayer 安装MPlayer可以直接安装别人编译打包好的安装包,或者可以从官方网站()下载源码包自行编译安装。 在fedora系列中你可以用yum来安装MPlayer和它的图形界面gmplayer。 $yum install mplayer gmplayer 在freebsd中可以用pkg_add来安装 $pkg_add -r mplayer gmplayer 如果自己采用源码来编译安装,要确保你采用了下面到参数: --enable-gui 安装图形界面 --enable-freetype freetype支持 --enable-fontconfig fontconfig字体管理工具支持 二、中文字体 你需要安装中文字体才能播放中文字幕,尤其是在使用英文的系统下。MPlayer支持下面两种字体: (1) TrueType字体 中文TrueType字体你可以采用系统自带的字体或者是microsoft的字体。microsoft的字体相对要美观得多,如我的MS字体在 fedora中放置在/usr/share/fonts/win/目录下。MPlayer还有一个默认字体:$HOME/.mplayer /subfont.ttf,当没指定或者找不到字体到时候使用。你可以把你喜欢到字体设置成默认字体,如 cp /usr/share/fonts/win/simhei.ttf ~/.mplayer/subfont.ttf 或者 ln -s /usr/share/fonts/win/simhei.ttf ~/.mplayer/subfont.ttf (2)font.desc字体 如果不幸地是你的MPlayer没有编译对FreeType字体支持,你就只能从官方网站下载字体文件,例如 gb2312-kai.tgz。实际上它是一个压缩包包含了一系列文件,其中一个font.desc就是字体描述文件。 播放到时候选择正确到字体十分的重要,要不你的字幕字幕都是乱码。 A、font.desc字体的话,要加上-unicode参数。 B、TrueType字体的话,要加上-subcp xxx参数。其中xxx可能为:cp936、gb、gbk等等,具体要看字幕的编码格式。 三、字幕的编码格式 例如我们下载来一个多语言的字幕文件: $ ls cd1.avi cd1.Chs.srt cd1.Cht.srt cd1.Eng.srt 其中有简体中文,繁体中文和英文格式。 总的来说,字幕文件是什么编码格式,-subcp后面就加上相应的编码。 例如, A 字幕文件,cd1.Chs.srt,是GBK编码,用-subcp gbk B 字幕文件,cd1.Cht.srt,是GB编码,用-subcp gb C 字幕文件,cd1.Eng.srt,是utf8编码,用-utf8 utf8 的情况很少见,因为多数字幕是国人在windows下制作的,使用的都是GB系列的编码格式,不过你可以把原来的GB系列编码格式文件转换为utf8格式。要注意的是用font.desc加unicode的方法是不能正常显示utf8编码的字幕文件的。 一般的,使用-subcp cp936 就能正常显示简体中文字幕。你还可以用iconv -l来显示你的系统中已知的字符集,来帮助你选择编码。 四、MPlayer配置文件 MPlayer的配置文件放置在两个地方/etc/mplayer/和$HOME/.mplayer/,其中于字体相关的配置文件分别是/etc /mplayer/mplayer.conf和$HOME/.mplayer/config。/etc/mplayer/mplayer.conf是全局 配置文件,我们注意到它其中的几行: # Use fontconfig for font selection fontconfig = yes # Default font for unstyled subtitles font = "Sans" 字体管理工具fontconfig默认是开启的并设置了默认字体为"Sans"。在MPlayer的文档中关于Font有这样的说明(man mplayer): -font Search for the OSD/SUB fonts in an alternative directory (de- fault for normal fonts: ~/.mplayer/font/font.desc, default for FreeType fonts: ~/.mplayer/subfont.ttf). NOTE: With FreeType, this option determines the path to the text font file. With fontconfig, this option determines the fontcon- fig font name. EXAMPLE: -font ~/.mplayer/arial-14/font.desc -font ~/.mplayer/arialuni.ttf -font ’Bitstream Vera Sans’ -fontconfig (fontconfig only) Enables the usage of fontconfig managed fonts. NOTE: -ass automatically turns this on unless explicitly over- ridden with -nofontconfig. 这里提到了MPlayer支持的3种字体设定方式: a, 在使用fontconfig时,指定fontconfig的字体名 b, 在不使用fontconfig时,指定Truetype字体文件路径 c, 在不使用fontconfig时,指定常规字体文件font.desc路径 如果指定的文件路径不存在,则使用默认字体路径。 fontconfig的字体名就是字体在系统中的名字,例如宋体的英文字体名是"SimSun",雅黑的名字是"Microsoft YaHei"。 五、Let's play 现在我们终于可以开始娱乐一下了。由于fontconfig关系到字体,选择下面我们就fontconfig开启和关闭两种方式来播放我们到视频。 假如我们下载来一个多语言的视频: [glf@localhost test]$ ls cd1.avi cd1.Chs.srt cd1.Cht.srt cd1.Eng.srt [glf@localhost test]$ 字幕文件到编码格式我们在上面已经说过了,那么 (1)我们想用宋体来播放简体中文的字幕 mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -fontconfig -font "SimSun" 如果fontconfig是默认打开到,你可以省略-fontconfig 这个参数,下同。或者关闭fontconfig,我们自己选择字体 mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -nofontconfig -font /usr/share/fonts/simsun.ttc (2)如果你觉得宋体不如雅黑好看,那么你可以: mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -fontconfig -font "Microsoft YaHei" 或者 mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -nofontconfig -font /usr/share/fonts/MSyahei/msyh.ttf (3)错误的方式 如果fontconfig默认打开,而你又指定了字体的路径,或者fontconfig已经关闭,而你却指定来字体的名字,这都可以使得MPlayer不能够正确地播放字幕。如 mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -fontconfig -font /usr/share/fonts/simsun.ttc fontconfig已经打开,却指定来一个不存在到字体名字“/usr/share/fonts/simsun.ttc” mplayer cd1.avi -sub cd1.Chs.srt -subcp cp936 -nofontconfig -font "SimSun" fontconfig已经关闭,却指定来一个不存在的字体路径。 (4)同时载入多个字幕 [glf@localhost test]$ ls cd1.avi cd1.Chs.srt cd1.Cht.srt cd1.Eng.srt 对于上面的多个字幕,一个个载入太麻烦来。其实mplayer还有一个聪明的参数可以使用的,就是 -sub-fuzziness Adjust matching fuzziness when searching for subtitles: 0 exact match 1 load all subs containing movie name 2 load all subs in the current directory 可以使用-sub-fuzziness 2来让mplayer加载目录下的所有字幕文件,播放时可以通过j键切换。 mplayer cd1.avi -sub-fuzziness 2 (5)播放vobsub格式字幕(*.sub) vobsub字幕字型是内嵌的,可以不用选择字体,此时字幕文件名跟媒体文件名相同(后缀不同) mplayer cd1.avi (6)播放内嵌字幕的mkv媒体文件 此时可以用-sid XXX 参数来选择内嵌到字幕。 首先,我们查看一下它内嵌来多少种字幕: mplayer Back.to.the.Future.1985.HDTVRip.x264.AAC.HALFCD-TLF.mkv 其中有输出 Playing Back.to.the.Future.1985.HDTVRip.x264.AAC.HALFCD-TLF.mkv. libavformat file format detected. [lavf] Audio stream found, -aid 0 [lavf] Video stream found, -vid 1 [lavf] Subtitle stream found, -sid 0 [lavf] Subtitle stream found, -sid 1 [lavf] Subtitle stream found, -sid 2 VIDEO: [H264] 640x352 0bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s) ========================================================================== 可以看到有3中字幕,编号从0到2 [lavf] Subtitle stream found, -sid 0 [lavf] Subtitle stream found, -sid 1 [lavf] Subtitle stream found, -sid 2 那么我们就可以用-sid 0,-sid 1或者-sid 2来指定字幕: mplayer Back.to.the.Future.1985.HDTVRip.x264.AAC.HALFCD-TLF.mkv -sid 0 -subcp cp936 -font "SimSun" (7)播放内嵌字幕的OMG媒体文件 同mkv。 六、MPlayer播放字幕到其他一些技巧 (1)字幕字体大小的设定 用MPlayer播放时显示的字幕字体大了点,有时字数一多就要多行显示,实在不太行。此时可以用-subfont-autoscale和-subfont-text-scale来调整字体大小。 如: mplayer Back.to.the.Future.1985.HDTVRip.x264.AAC.HALFCD-TLF.mkv -sid 0 -subcp cp936 -font "SimSun" -subfont-autoscale 2 -subfont-text-scale 4 这两个参数后,字体大小就比较满意。 七、配置文件 上面命令很多也很长,记忆起来不容易,敲命令也很麻烦。那么我们可以把它写入配置文件。前面我们说过了MPlayer字幕相关到配置文件有两个/etc /mplayer/mplayer.conf和$HOME /.mplayer/config,MPlayer运行时现读入前者,后读入后者。配置时我们要注意他们到循序。建议修改$HOME/.mplayer /config ## 使用fontconfig fontconfig = yes font = "SimSun" 或者 ## 不使用fontconfig fontconfig = no font = "/usr/share/fonts/simsun.ttf" 然后在加上: subcp=cp936 八、本文由godmoeny编写,转载请注明。 附录: 我到配置文件 # Write your default config options here! # ----------------------- # test by glf # #视频输出以xv模式,启用视频加速,占用资源少 vo=xv # 使用fontconfig fontconfig = yes font = "SimSun" # 不使用fontconfig #fontconfig = no #font = "/usr/share/fonts/win/simsun.ttf" #字幕加载 #1 加载文件名相同的字幕; 2 加载当前目录所有字幕文件;可按J键切换 #sub-fuzziness=2 #字幕编码(使用TTF字体时使用) subcp=cp936 #字幕缩放 #0 不自动缩放; #1 按电影高度缩放; #2 按电影宽度缩放; #3 按电影对角线缩放(默认值) subfont-autoscale=2 #OSD字幕的自动缩放系统(屏幕尺寸的百分比),值范围为0~100,默认值为6 subfont-osd-scale=6 #设置字幕文本的自动缩放系数(屏幕尺寸的百分比),值范围为 0~100,默认值为5 subfont-text-scale=4 #允许视频缩放 zoom = yes |