一直在用mplayer,其他的播放器很少用。以下是我使用过程中的一些心得。 

注意,下面用的路径都是在我的电脑上的路径,使用时请不要照抄!应该换成你的电脑上的正确路径。 

一、首先还是讲安装方面的问题。 

具体的安装见本版的精华帖子,这里不详细讲。 

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=80676 

代码: ./configure --enable-gui --with-codecsdir=/usr/lib/w32/
--language=zh_CN --enable-freetype --enable-fontconfig 

这是我使用的编译参数,仅供参考。 



1、解码器 

到官方网站下载,放到一个目录下,./configure时用--with-codecsdir=DIR来指定。 



2、GUI 

要想使用GUI界面,编译时指定--enable-gui参数。安装完后,到官方下载皮肤,解压后放到mplayer的Skin目录下。之后可以用gmplayer -skin xxx来启动(xxx为Skin中的皮肤的目录名)。 



3、配置文件 

其实不使用config配置文件也行的。mplayer会使用默认的规则。如果你还是想使用配置文件,可以到源代码目录下的etc目录下找。那个什么example的文件就是config的实例文件。 



4、字幕字体 

有两个方法: 

A、到官方网站下载字体文件,具体参考mplayer索引中的帖子: 

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&p=3892464#3892464 

使用的是font.desc这个文件。 

B、在编译是使用--enable-freetype参数(当然要系统支持),在~/.mplayer/下建立subfont.ttf的符号连接到某个字体文件。例如我的是subfont.ttf -> /usr/fonts/truetype/simsun.ttf。这样mplayer就会自动加载字体了。 



方法A可以在config文件中写font=/tmp/gb2312-kai/gkai00mp24/font.desc来让mplayer自动加载。注意config中的font设定比subfont.ttf优先级更高。(优先级应该是:命令行中的设定->config中的设定-> subfont.ttf) 

命令行中指定字体文件,通过-font参数。例如: 

mplayer -font /xxx/font.desc 或 mplayer -font /xxx/simsun.ttf 



二、字幕显示 

1、字幕的加载 

其实mplayer是可以自动加载字幕文件的。但是这只是在字幕文件名跟媒体文件名相同时才起作用(后缀不同) 

例如这样的: 

“迁徙的鸟” 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD1.avi 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD1.idx 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD1.sub 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD2.avi 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD2.idx 

Le.Peuple.Migrateur.SBC.AC3_2Ch-SBMovie.CD2.sub 

这样的就能自动加载字幕,通过j键切换。 

但像这种的就不行了 

“魔戒3” 

dmd-rotktc-cd1.avi 

dmd-rotktc-cd1.Chs.srt 

dmd-rotktc-cd1.Cht.srt 

dmd-rotktc-cd1.Eng.srt 

dmd-rotktc-cd2.avi 

dmd-rotktc-cd2.Chs.srt 

dmd-rotktc-cd2.Cht.srt 

dmd-rotktc-cd2.Eng.srt 

dmd-rotktc-cd3.avi 

dmd-rotktc-cd3.Chs.srt 

dmd-rotktc-cd3.Cht.srt 

dmd-rotktc-cd3.Eng.srt 

这种情况下要使用参数具体指定一个字幕文件 

mplayer dmd-rotktc-cd1.avi -sub dmd-rotktc-cd1.Chs.srt 



其实mplayer还有一个聪明的参数可以使用的,就是 

-sub-fuzziness <mode> 

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 dmd-rotktc-cd1.avi -sub-fuzziness 2 

多说一句,这个参数在命令行下是较好使的,但KPlayer中就不行。(我用的是ML1.2b1,呵呵) 



2、中文字幕的显示 

有的人安装了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-device /xxx/dvd -sid 0 -subcp cp936 -framedrop 



流媒体文件 

mplayer -cache 8192 

使用8M的缓存 



framedrop参数 

我的配置:赛扬366Mhz,440zx主板,256M,GF4mx440,系统MagicLinux 1.2b1、MPlayer1.0pre5。 

在我的电脑上,还能流畅播放avi、老的rm/rmvb、ogm、asf等媒体。较新的rmvb、wmv和DVD播放都很慢。发现只有在播放DVD时使用 framedrop参数后能流畅播放,其他的rmvb、wmv使用了framedrop参数后不但速度没提高,有时反而更慢。 



暂时只有这么多。哪位有好的播放心得请续帖子!!!

mplayer使用心得[转]的更多相关文章

  1. 开源项目live555学习心得

      推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册   疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...

  2. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  3. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  4. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  8. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. 力扣142——环形链表 II

    原题 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos ...

  2. springboot + freemarker 实现计算器

    使用RequestParam("") 接受参数 其后参数有自动类型转换的作用 @RequestParam("firstNumber") double first ...

  3. 小小知识点(二十九)open access 和 classic access期刊出版形式分别指的是什么?

    open access: 作者付费,读者免费获取方式:相当于你给所有读者买单,就是交钱让你的文章可免费下载,很显然文章的被引用几率机会会提高.对于那些追求他引的单位,个别作者就得出点银子了 class ...

  4. docker-代理服务器

    配置Docker以使用代理服务器 如果容器需要使用HTTP,HTTPS或FTP代理服务器,则可以通过不同方式对其进行配置: 在Docker 17.07及更高版本中,可以 将Docker客户端配置为自动 ...

  5. 虚拟机安装LEDE旁路由实现软路由功能

    如何在虚拟上安装LEDE软路由,接下来我们一步一步操作. 1.首先到https://firmware.koolshare.cn/ 下载虚拟机下专用盘如图标记均可 2.虚拟机创建 选择下载好的文件 保持 ...

  6. Linux普通用户如何获取root权限 sudo -i

    从下图中可以知道,xiaolai这个用户连接到服务器后它没有权限,更新代码都更新不了 那么我们作为一个普通用户要获取管理员权限,怎么办呢? 输入 sudo -i 然后再输入普通用户的这个密码 获取成功 ...

  7. 求一个数的阶乘在 m 进制下末尾 0 的个数

    题意 : 求一个数 n 的阶层在 m 进制下末尾 0 的个数 思路分析 : 如果是 10 进制地话我们是很容易知道怎么做的,数一下其对 5 约数地个数即可,但是换成 m 进制的话就需要先将 m 分解质 ...

  8. 【JavaScript 基础知识】一篇关于 JavaScript 一些知识点的总结

    JavaScript 中基础数据类型  数据类型名称  数据类型说明 Undefined 只有一个值,即 undefined ,声明变量的初始值. Null 只有一个值,即 null ,表示空指针,  ...

  9. 轻松弄懂var、let、const之间的区别

    ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,于2015年6月正式发布,也称ECMAScript 2015. ES6的好处 ES6的出现为我们前端带来了很多方便之处,以 ...

  10. NameError:name ‘xrange’ is not defined

    原因: 在Python 3中,range()与xrange()合并为range( ). 我的python版本为python3.5. 解决办法: 将xrange( )函数全部换为range( ).