mplayer字幕诸问题

2013-03-02 22:23

mplayer功能强大,是linux下播放视频,电影的不二选择,但源于其功能太过于强大,
使用起来还是有很大的难度的,但归结到我这样的新手,英语又差的,最棘手的无疑
时字幕的诸多问题。本文记录我在使用mplayer时解决字幕问题的一些方法。

字幕下载

自己动手下载字幕是最简单的解决方法,但大多数时候由于影片的发布,压缩格式等
的不同,字幕的时序也不一样,这造成下载下来的外挂字幕大多不能和影片同步。

win下有个splayer(射手播放器)很好用,可以自动跟据影片匹配射手网上的字幕,
并且自动下载加载播放,很实用的功能。splayer虽然开源,但遗憾的是其调用了大
量的windows API,换言之,即不能跨平台。所以在linux下还是得用mplayer系列播
放器。

借助于脚本语言实现类似于splayer的功能是可行的,这方面,可以考虑的方法很多。
射手虽然没有提供开放的API,但这难不倒程序员,况且我们只是自己下载来看的,
并不做批量下载,所以避开射手的防机器人手段还是可以做到的。有了想法自然时
动手实现。上github搜了一下是否已经有高手实现过了。果然,已经有人实现了这么
一个脚本。这就是mplayer-wraper。作者的github id是sunbing81,这是其项目主页
http://gosubi.me/adow/mplayerwrapper,有很详细的介绍,照做不难。该项目有
bash和python两个版本,python实现了影片hash和字幕的hash匹配,可以很精准的
查找到字幕,基本不存在字幕时序问题。

字幕加载

通过mplayer-wraper可以下载到字幕,但mplayer加载字幕依然会出现问题。往往字幕
好好的,加载上去却时乱码。据我的观察,主要有两种乱码,其一是完全的乱码,其
二是字幕变成了下划线。

前者完全乱码的原因是字幕编码的问题,只需在播放影片时指明字幕的编码,如下:

:::bash
mplayer -sub sub-file -subcp utf8 film-file

这样一般是可以解决问题了,但有时虽不再是乱码,但却成了下划线。这是字体的问
题,mplayer需要指明字幕的字体才能正常显示。具体命令如下:

:::bash
mplayer -sub sub-file -subcp utf8 -font simhei film-file

simhei是一种中文linux下的字体,如果没有可以安装,或者使用现有的字体。可以在
/usr/share/fonts目录下找到系统安装的所有字体。

简单方法

上述方法可以实现目的,但看个电影敲一堆命令的体验肯定不好,有时再折腾半个小
时就更难受了。mplayer是一个成功的软件,自然可以写配置文件,有配置文件,所有
的命令行参数都可以写进去做为默认参数执行。

如上文所示的命令,只需要在~/.mplayer/config文件里写上两行即可:

:::bash
subcp='utf8'
font='simhei'

如此即可直接用mplayer播放影片了,不需要再加其他参数,当然若遇上其他编码格式
的字幕文件,直接用默认参数肯定会乱码,可以在播放之前把字幕文件编码转为utf8,
或者在命令行里加上指明字幕编码的命令参数。


标签: linux应用 mplayer

分享到: