一直在用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. .NetCoreApi容器与MySql容器互联

    构建Mysql容器 1.拉取mysql镜像 docker pull mysql/mysql-server 2.创建mysql镜像 docker run -d -p 3306:3306 -e MYSQL ...

  2. AES Base64 C++加密工具

    最近写了一段C++ 的AES 加密的工具,在github 上找了很多工具,都不太好用,Star数字比较的高的一个,只能加密16个字节的,加密数字长数据,会出现乱码,不能使用 这里附上代码,文件以供大家 ...

  3. spring boot 中AOP的使用

    一.AOP统一处理请求日志 也谈AOP 1.AOP是一种编程范式 2.与语言无关,是一种程序设计思想 面向切面(AOP)Aspect Oriented Programming 面向对象(OOP)Obj ...

  4. 【一起学源码-微服务】Ribbon源码五:Ribbon源码解读汇总篇~

    前言 想说的话 [一起学源码-微服务-Ribbon]专栏到这里就已经全部结束了,共更新四篇文章. Ribbon比较小巧,这里是直接 读的spring cloud 内嵌封装的版本,里面的各种config ...

  5. 关于ESP8266 NodeCMU固件无法刷入新代码的解决方法

    在玩ESP8266时,有时候会无意中写了导致死循环的代码,或都某些函数传递了不合适的参数导致系统崩溃,这可能会导致ES8266不停地重启,这时我们发现无法刷入新的代码,也无法删除8266中的原代码.我 ...

  6. Spring Boot从零入门3_创建Hello World及项目剖析

    目录 1 前言 2 名词术语 3 创建Hello World项目 3.1 基于STS4创建项目 3.2 使用Spring Initializr Website创建项目并导入 3.3 基于Spring ...

  7. Spring Boot2 系列教程 (十四) | 统一异常处理

    如题,今天介绍 SpringBoot 是如何统一处理全局异常的.SpringBoot 中的全局异常处理主要起作用的两个注解是 @ControllerAdvice 和 @ExceptionHandler ...

  8. ORM基础5

    一.一对一 场景:字段多,且一部分字段使用率高 优点:提高效率 实质:唯一的外键 # Person表 class Person(models.Model): id = models.AutoField ...

  9. 【红外DDE算法】数字细节增强算法的缘由与效果(我对FLIR文档详解)

    [红外DDE算法]数字细节增强算法的缘由与效果(我对FLIR文档详解) 1. 为什么红外系统中图像大多是14bit(甚至更高)?一个红外系统的性能经常以其探测的范围来区别,以及其对最小等效温差指标.首 ...

  10. [bzoj1005] [洛谷P2624] 明明的烦恼

    Description 自从明明学了树的结构,就对奇怪的树产生了兴趣-- 给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为N(0 ...