LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 932|回复: 2

gmplayer怎么正常挂载中文字幕?

[复制链接]
发表于 2005-2-22 21:05:04 | 显示全部楼层 |阅读模式
挂载srt字幕,中文部分都是一条横线,请问怎么解决?好象是字体的问题?
 楼主| 发表于 2005-2-23 20:54:52 | 显示全部楼层
难道gmplayer无法支持外挂中文字幕?我还非得回到windows下看mkv、avi+srt什么的啊……
回复 支持 反对

使用道具 举报

发表于 2005-2-23 22:44:13 | 显示全部楼层
字幕选项里unicode选上,选cp936(有两个地方,只要改一个另一个不变,我现在用的没有gmplayer,所以不知道具体在哪)。
不过最好还是用命令行启动,好像mkv的只有这样才能加载字幕,转一个用法吧:



有的人安装了mplayer和字体后,显示的中文字幕是乱码。这主要是没有设置好参数的问题。
结合上面的“字幕字体”中的介绍的两个方法,分别要加上以下参数才能正常显示中文字幕。
A、font.desc字体的话,要加上-unicode参数。
B、ttf字体的话,要加上-subcp xxx参数。其中xxx可能为:cp936、gb、gbk等等,具体要看字幕的编码格式。
例如:
代码:

mplayer dmd-rotktc-cd1.avi -sub dmd-rotktc-cd1.Chs.srt -font /tmp/gb2312-kai/gkai00mp24/font.desc -unicode


代码:

mplayer dmd-rotktc-cd1.avi -sub dmd-rotktc-cd1.Chs.srt -font /usr/share/fonts/simsun.ttf -subcp cp936


其实上一节“1、字幕的加载”给出的mplayer的播放命令都是不能正常显示中文的,因为没加上正确的参数。

到这里,关于-sub-fuzziness要多说一下了。为了正确显示中文,要加-subcp参数,例如-subcp cp936
mplayer dmd-rotktc-cd1.avi -sub-fuzziness 2 -subcp cp936
但这样又会带来一个问题。像上面的魔戒3中,有简体、繁体和英文字幕。但加上-subcp cp936后,繁体字幕会加载不了。

对于font.desc和ttf这两种字幕字体,我个人推荐使用ttf字体。因为使用font.desc会不能正常显示一些中文字幕(内嵌字幕等),即使加上-unicode参数。或许行,但我不知道要用什么方法才行。下面,就以ttf字体的例子,讲讲具体的字幕显示方法。

总的来说,字幕文件是什么编码格式,-subcp后面就加上相应的编码。
例如,字幕文件是GB编码的话,就用-subcp gb
字幕文件是GB2312编码的话,就用-subcp gb2312
字幕文件是utf8编码的话,就用-utf8
utf8的情况很少见,因为多数字幕是国人在windows下制作的,使用的都是GB系列的编码格式,不过你可以把原来的GB系列编码格式文件转换为utf8格式,你会发现使用-utf8参数后才能正常显示字幕。同时你会发现用font.desc加unicode的方法是不能正常显示utf8编码的字幕文件的。

一般的,使用-subcp cp936 就能正常显示简体中文字幕。如果你发现显示的字幕中有的正常,有的不正常,这说明字幕文件确实是GB系列编码的,你可以试试把cp936换成其他的例如GBK,GB2312等等,总有一个行的。你还可以用iconv -l来显示系统中已知的字符集,来帮助你选择编码。
我的系统中GB系列有GB, GB2312, GB13000, GB18030, GBK, GB_1988-80, GB_198880

在这方面,mplayer也有一个不错的选项可以使用。
-subcp enca:<language>:<fallback codepage> (ENCA only)
You can specify your language using a two letter language code
to make ENCA detect the codepage automatically. If unsure, en-
ter anything and watch mplayer -v output for available lan-
guages. Fallback codepage specifies the codepage to use, when
the autodetection fails.

EXAMPLE:
-subcp enca:cs:latin2
Guess the encoding, assuming the subtitles are Czech,
fall back to latin 2, if the detection fails.
-subcp enca:pl:cp1250
Guess the encoding for Polish, fall back to cp1250.
但我发现这个选项工作的不太好,例如-subcp enca:zh:cp936
按照上面的说明,应该是让其自动检测中文编码,检测失败时使用cp936。
原来使用-subcp cp936能正常显示的字幕,当用-subcp enca:zh:cp936时反而成了乱码。

上面所说的都是外挂字幕文件的,现在介绍两种内嵌字幕的媒体格式:
MKV格式:
播放命令:
mplayer \[52wy\]\[Naruto\]\[094\]\[Jp_Cn\]\[Xvid_Bf\].mkv -sid 0 -subcp gb -font /usr/share/fonts/simsun.ttf

建议在命令行下播放,这样可以看到详细的信息:
代码:

       播放 [52wy][Naruto][094][Jp_Cn][Xvid_Bf].mkv.
       SUB: error opening iconv descriptor.
       [mkv] Track ID 1: video (V_MS/VFW/FOURCC), -vid 0
       [mkv] Track ID 2: audio (A_MPEG/L3), -aid 0, -alang und
       [mkv] Track ID 3: sutitles (S_TEXT/UTF8), -sid 0, -slang chi
       [mkv] Track ID 4: sutitles (S_TEXT/UTF8), -sid 1, -slang chi
       [mkv] Will play video track 1
       [mkv] Will play audio track 2
       [mkv] Will display subtitle track 3
       检测到Matroska文件格式。
        

要使用-sid 0或者-sid 1来指定字幕。不然mplayer默认不加载字幕的。

OGM格式:
我在一些国外网站上下载了一些OGM格式的文件,一开始我还以为没字幕的。后来看到播放信息才发现原来是内嵌的字幕(要通过-sid 0调出来)
代码:
SUB: error opening iconv descriptor.
       SUB: error opening iconv descriptor.
       检测到Ogg文件格式。

播放命令:mplayer xxx.ogm -sid 0 -subcp cp1250 (是英文字幕来的)

最后说一下字幕字体大小的设定。我发现用
-font /usr/share/fonts/simsun.ttf
显示的字幕字体大了点,有时字数一多就要多行显示,实在不太行。
后来试了试,觉得使用
-subfont-autoscale 2 -subfont-text-scale 4
这两个参数后,字体大小就比较满意。

3、其他
RMVB
最新的real编码,mplayer暂时不支持,要看的话使用realplayer10 for linux。不过这个软件在有些机上工作不太正常。
有些rmvb文件,虽然不是用最新的编码器制作的,但是用mplayer播放时会因为“段错误”而退出。我发现可能是音频解码出了问题,可以使用-nosound来播放,就是没声音。或者试试用-ss 00:00:50 来跳到50s处播放,有时可以解决问题。

硬盘上的DVD
mplayer dvd://1 -dvd-device /xxx/dvd -sid 0 -subcp cp936 -framedrop

流媒体文件
mplayer -cache 8192 mmst://xxxxx/xxx.wmv
使用8M的缓存

framedrop参数
我的配置:赛扬366Mhz,440zx主板,256M,GF4mx440,系统MagicLinux 1.2b1、MPlayer1.0pre5。
在我的电脑上,还能流畅播放avi、老的rm/rmvb、ogm、asf等媒体。较新的rmvb、wmv和DVD播放都很慢。发现只有在播放DVD时使用 framedrop参数后能流畅播放,其他的rmvb、wmv使用了framedrop参数后不但速度没提高,有时反而更慢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表