mplayer使用心得[转]
一直在用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使用心得[转]的更多相关文章
- 开源项目live555学习心得
推荐:伊朗美女找丈夫比找工作难女人婚前一定要看清三件事 × 登录注册 疯狂少男-IT技术的博客 http://blog.sina.com.cn/crazyboyzhaolei [订阅][手机订 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- NoSql数据库使用半年后在设计上面的一些心得
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- 前端模块化——彻底搞懂AMD、CMD、ESM和CommonJS
我们知道,在NodeJS之前,由于没有过于复杂的开发场景,前端是不存在模块化的,后端才有模块化.NodeJS诞生之后,它使用CommonJS的模块化规范.从此,js模块化开始快速发展. 模块化的开发方 ...
- 子网划分及NAT技术总结
近段项目需要用到网络相关的知识,硬着头皮又回顾了一波,这里做一下记录. 一 分类的IP地址 我们使用的IP地址(IP V4)可以划分为A,B,C,D,E 5个类型,其中的D,为组播地址,E类地址为保留 ...
- 力扣208——实现 Trie (前缀树)
这道题主要是构造前缀树节点的数据结构,帮助解答问题. 原题 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = ...
- 交换机广播风暴,STP生成树协议,端口聚合
交换机(工作在数据链路层)具有学习功能: 一台刚重启的交换机上的mac地址表为空,根据数据包的来源,目的地来学习MAC地址与端口的映射关系映射关系,对于MAC地址表之中已有的就不管了,对未知端 ...
- 程序员必知的技术官网系列--mysql篇
mysql 官网 https://www.mysql.com/ 官网布局很简单, 其中常用的两块就是下载和文档这两块, 其中下载没什么可讲的, 本次重点依旧是文档. 首页 mysql 文档导航页 ht ...
- JavaScript-EventLoop-事件循环
2020-01-11 EventLoop-事件循环 一.学习事件循环之前,先学习几个英语词组 EventLoop 事件循环 Event Queue 事件队列 Event Table 事件表macro- ...
- 道格拉斯-普克算法(JavaScript实现)
需求: 有时候当移动速度很慢,GPS定位的轨迹点就非常的多,这时候为了缩减数据量,需要将不突出的点去掉. 思路: (1) 在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离. (2)选其最大者与 ...
- 自己动手搭环境—unit 1.1、Struts2环境搭建
在手动配置action的基础上引入struts2-convention-plugin-2.x.x.jar以支持action的注解支持 修改的地方主要在struts.xml中 <?xml vers ...
- HTTP图解笔记(六)—— 第6章 HTTP首部
前言 为啥第一章直接跳到第六章呢,因为...博主当初看书的时候挑着看..只看了第一章和第六章┗( ▔, ▔ )┛ HTTP图解对于不熟悉HTTP的小伙伴来说是很好的书籍,建议入手! 一. HTTP报文 ...
- Java 中的等待唤醒机制透彻讲解
线程的状态 首先了解一下什么是线程的状态,线程状态就是当线程被创建(new),并且启动(start)后,它不是一启动就进入了执行状态(run),也不是一直都处于执行状态. 这里说一下Java 的Thr ...