一直在用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. 前端模块化——彻底搞懂AMD、CMD、ESM和CommonJS

    我们知道,在NodeJS之前,由于没有过于复杂的开发场景,前端是不存在模块化的,后端才有模块化.NodeJS诞生之后,它使用CommonJS的模块化规范.从此,js模块化开始快速发展. 模块化的开发方 ...

  2. 子网划分及NAT技术总结

    近段项目需要用到网络相关的知识,硬着头皮又回顾了一波,这里做一下记录. 一 分类的IP地址 我们使用的IP地址(IP V4)可以划分为A,B,C,D,E 5个类型,其中的D,为组播地址,E类地址为保留 ...

  3. 力扣208——实现 Trie (前缀树)

    这道题主要是构造前缀树节点的数据结构,帮助解答问题. 原题 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = ...

  4. 交换机广播风暴,STP生成树协议,端口聚合

    交换机(工作在数据链路层)具有学习功能:     一台刚重启的交换机上的mac地址表为空,根据数据包的来源,目的地来学习MAC地址与端口的映射关系映射关系,对于MAC地址表之中已有的就不管了,对未知端 ...

  5. 程序员必知的技术官网系列--mysql篇

    mysql 官网 https://www.mysql.com/ 官网布局很简单, 其中常用的两块就是下载和文档这两块, 其中下载没什么可讲的, 本次重点依旧是文档. 首页 mysql 文档导航页 ht ...

  6. JavaScript-EventLoop-事件循环

    2020-01-11 EventLoop-事件循环 一.学习事件循环之前,先学习几个英语词组 EventLoop 事件循环 Event Queue 事件队列 Event Table 事件表macro- ...

  7. 道格拉斯-普克算法(JavaScript实现)

    需求: 有时候当移动速度很慢,GPS定位的轨迹点就非常的多,这时候为了缩减数据量,需要将不突出的点去掉. 思路: (1) 在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离. (2)选其最大者与 ...

  8. 自己动手搭环境—unit 1.1、Struts2环境搭建

    在手动配置action的基础上引入struts2-convention-plugin-2.x.x.jar以支持action的注解支持 修改的地方主要在struts.xml中 <?xml vers ...

  9. HTTP图解笔记(六)—— 第6章 HTTP首部

    前言 为啥第一章直接跳到第六章呢,因为...博主当初看书的时候挑着看..只看了第一章和第六章┗( ▔, ▔ )┛ HTTP图解对于不熟悉HTTP的小伙伴来说是很好的书籍,建议入手! 一. HTTP报文 ...

  10. Java 中的等待唤醒机制透彻讲解

    线程的状态 首先了解一下什么是线程的状态,线程状态就是当线程被创建(new),并且启动(start)后,它不是一启动就进入了执行状态(run),也不是一直都处于执行状态. 这里说一下Java 的Thr ...