Chinaunix首页 | 论坛 | 博客
  • 博客访问: 636030
  • 博文数量: 205
  • 博客积分: 7891
  • 博客等级: 少将
  • 技术积分: 2168
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-29 13:16
文章分类

全部博文(205)

文章存档

2015年(4)

2014年(5)

2013年(1)

2012年(4)

2011年(51)

2010年(86)

2009年(45)

2008年(9)

分类:

2010-06-09 10:21:54

使用 MPlayer 播放媒体文件最简单的方式是:

mplayer

MPlayer 会自动检测文件的类型并加以播放,如果是音频文件,则会在命令行中显示该播放文件的状态信息;而假如是视频文件的话,则会打开一个新的播放窗口。

倒退与快进

在播放文件的时候,你可以通过以下三组快捷键来对播放进程进行倒退与快进操作:

  • 左方向键和右方向键:分别执行倒退 10 秒和快进 10 秒操作
  • 下方向键和上方向键:分别执行倒退 1 分钟和快进 1 分钟操作
  • 下翻页键和上翻页键:分别执行倒退 10 分钟和快进 10 分钟操作

播放 DVD

虽然 MPlayer 不支持 DVD 菜单,但是却能够播放 DVD。你可以这样播放 DVD:

mplayer dvd://

你需要使用实际的数字来替换 ,如 1、2、3 等。

使用字幕

当播放电影文件时,你可以指定字幕文件:

mplayer -sub

在播放 DVD 电影时,你也可以通过指定语言代码来使用字幕:

mplayer dvd:// -slang nl,en

这样,MPlayer 就会优先使用荷兰语字幕,如果该语言不可用,则再使用英语字幕。

有用的快捷键

以下是 MPlayer 中一些有用的快捷键:

  • f-当播放视频时,在全屏和窗口模式之间切换。你也可以在命令行中使用 -fs 选项,以便让 MPlayer 开始在全屏模式中播放。
  • o-在播放视频时切换 OSD(OnScreen Display)模式。
  • p 或 Space-暂停/继续播放。
  • q 或 Esc-退出 MPlayer。在 GUI 模式时,Esc 不会退出,仅停止播放。
  • / 和 * 或 9 和 0-减小或增大音量。
  • m-静音切换。
  • T(通常是 Shift + t)-播放窗口置顶切换。
  • b 和 j-在可用的字幕间循环。
  • x 和 z-调整字幕的延迟时间。
  • I(Shift + i)-显示播放电影的文件名称。
  • 1 和 2-调整对比度。
  • 3 和 4-调整亮度。
  • 5 和 6-调整色度。
  • 7 和 8-调整饱和度。

生成索引

有时候,有些视频文件(主要是 AVI 文件)包含损坏的索引,或者根本就没有索引。这种情况通常是由下载文件不正确或未完成造成的。幸运的是,MPlayer 能够生成正常播放文件所需的索引。通过使用 -idx 选项,你可以告诉 MPlayer 来生成索引:

mplayer -idx

有时候文件虽然包含索引,但却已损坏。那样的情况,你可能需要 MPlayer 强制生成索引:

mplayer -forceidx

根据视频文件的大小,生成索引需花费一定的时间。但在此后,文件应该能够正常播放。

纠正错误的音频/视频同步

有些视频文件(主要是 flv 文件)由于编码的问题,会给 MPlayer 带来音频/视频同步的麻烦。这有两种可能情况:

  • MPlayer 会尝试修复,但同步问题却更遭。
  • MPlayer 会尝试修复那些正确的,因此没有必要同步。

对于第一种情况,你应当让 MPlayer 努力修复同步问题:

mplayer -autosync 30 -mc 2.0

而对于第二种情况,你不应当允许 MPlayer 去修复同步问题:

mplayer -autosync 0 -mc 0

将上述命令中的 autosync 设置为正值就会让 MPlayer 逐渐调整音频/视频的同步。值越高,MPlayer 越快地修复它。mc 选项指定 MPlayer 纠正每帧要多少秒。值越高,MPlayer 越认为接近修复音频/视频同步。设置为 0 则阻止 MPlayer 修复。

在慢系统上使用 MPlayer

MPlayer 允许在旧的或慢的系统上使用低 CPU 功率来播放视频文件。你可以使用 -framedrop 选项:

mplayer -framedrop

当播放 MP3 或 OGG Vorbis 文件时,你可能感受到一定的缓冲,这将影响你的音乐体验。那样的话,你可以尝试使用 libmad(MP3)或 Tremor(OGG Vorbis)音频解码器。你可以这样来检测它们:

对于 MP3:

mplayer -ac help | grep mad

如果上面的命令返回的结果像这样:

mad libmad working libMAD MPEG layer 1-2-3 [libmad]

那么你可以使用 libmad 播放 MP3:

mplayer -ac mad

在 OGG 的情况中,你可以使用同样的技巧来检测 tremor 音频解码器是否可用:

mplayer -ac help | grep tremor

播放流媒体

如果 MPlayer 无法自动找到播放列表或直接的流媒体文件,你可以尝试使用 -playlist 选项:

mplayer -playlist

同时你也可以设置较大的缓存:

mplayer -cache 8192 -playlist

指定缓存大小的单位是 KB,上面的命令将允许 MPlayer 使用 8 MB 缓存。你可以使用 -cache-min 选项来改变 MPlayer 占用缓存的百分比:

mplayer -cache 8192 -cache-min 50 -playlist

循环播放

如果你想让媒体文件循环播放,可以使用 -loop 选项:

mplayer -loop 3

上面的命令将播放 3 次,然后才退出。

mplayer -loop 0

上面的命令将永远重复播放

改变播放速度

你可以使用 -speed 选项来改变 MPlayer 播放媒体文件的速度。值为 1.0,意味着正常速度;0.5 意味着慢两倍;2.0 意味着快两倍。像这样指定选项:

mplayer -speed 2.0

改变采样率

使用 -srate 选项你可以改变 MPlayer 输出的采样率:

mplayer -srate 48000

将音频输出为 wav 文件

你可以将视频文件中的音频部分输出为 wav 文件:

mplayer -ao pcm

这将输出名为 audiodump.wav 的音频文件。你也可以为输出的 wav 文件指定名称:

mplayer -ao pcm:file=.wav

使用 ASCII 方式观看电影

虽然无用,但却很好玩。有两个库文件支持该特性:aa 和 caca。使用 libaa,你只能在黑白 ASCII 中观看电影。而 libcaca 支持色彩。然而,libaa 支持更广泛。你可以像这样使用 libaa 观看电影:

mplayer -vo aa

如果你想使用 libcaca:

mplayer -vo caca

将电影输出为系列图片

MPlayer 也能将电影输出为一系列的图片:

mplayer -vo jpeg

注意:上面的命令将产生数量巨大的 jpeg 文件。输出的 jpeg 文件名看起来像这样:00000001.jpg、00000002.jpg、00000003.jpg 等等。

你也可以输出其他的格式。只需将命令中的 jpeg 替换成 ppm、png、tga 等。

指定纵横比

当你在宽屏中播放电影时,可能想要使用 16:9 的纵横比:

mplayer -aspect 16:9

在非宽屏中,你可以使用 4:3 的纵横比。

将选项放置到 MPlayer 的配置文件中

对于一般用户来说,该配置文件位于 ~/.mplayer/config;全局的配置文件在 /etc/mplayer/config。不同的值使用行分隔


mplayer 播放c 盘所有mp3

硬盘上的歌太多太乱…foobar 和 vlc player 都可以指定目录,自动检索并播放其中的歌曲,mplayer 怎么办呢?

find /media/hdc1/ -name *.mp3 > c.m3u

搜索 c 盘所有mp3并打成 3.m3u 播放列表

mplayer -playlist c.m3u -shuffle

随机播放c盘mp3。我是在tty1 中执行的,但前面那个 find… 是在 x win中打出来的,因为tty中无法显示中文.


mplayer使用心得


作者:GGGO 2005-01-22 17:22:43 来自:Linux公社

 一直在用mplayer,其他的播放器很少用。以下是我使用过程中的一些心得。
注意,下面用的路径都是在我的电脑上的路径,使用时请不要照抄!应该换成你的电脑上的正确路径。
一、首先还是讲安装方面的问题。
具体的安装见本版的精华帖子,这里不详细讲。

代码:
./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索引中的帖子:

使用的是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
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:: (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使用笔记

自己在使用 mplayer过程中遇到过不少的问题,像字幕的问题、没有声音等。看了不少的帖子,对自己有很大的帮助,但总有一些细节还需要自己完善。在这过程中作了一些笔记,今天有时间,拿出来整理整理,让大家在解决自己的mplayer问题的时候多一个参考。以下都是针对mplayer的,我不用图形界面的 gmplayer。

一、字幕问题
首先介绍一下字幕的基本知识。字幕主要有三种,sub格式、srt格式和内嵌格式。不同格式的字幕显示方法不太一样。

1,sub格式字幕:sub格式字幕其实是特殊的经过压缩处理的位图格式的字幕,因此它的显示非常简单。只需要sub字幕文件跟avi文件在同一目录下,并且前缀名完全相同,mplayer就会自动加载。有时候从射手网上下载的字幕文件跟avi文件前缀名不一样,最好手工改成一样的。举例来说,电影文件为 abcdefg.avi,那么字幕文件就应该是abcdefg.sub。

如果实在不愿意改,那还可以玩个花,就是在mplayer后面加上“-vobsub”的参数,该参数后面跟着字幕文件的前缀名。注意只需要前缀名,并且同目录下还要有字幕的.idx文件。举例来说,avi文件是$home/movie/abcdefg.avi,sub字幕文件是$home /download/chs.sub和$home/download/chs.idx,那么mplayer的命令就是
mplayer -vobsub $home/download/chs $home/movie/abcdefg.avi

2,srt格式字幕:srt格式字幕是文本格式的,也有两种方法搞定它。
一种是下载mplayer的一砣字幕字体文件,简体的和繁体的都要下。下面以简体为例。下载的文件名是gb2312-kai.tar.bz2。解压后有 gkai00mp16和gkai00mp24两个子目录,这两个区别就是字体的大小。假设解压到$home/.mplayer/目录下。继续假设avi文件是$home/movie/abcdefg.avi,srt是$home/download/chs.srt,(说起来简单,写起来咋就这么麻烦呢?)由于简体字幕一般都是简体中文编码,播放命令为
mplayer -font $home/.mplayer/gkai00mp24/font.desc -sub $home/download/chs.srt -subcp cp936 $home/movie/abcdefg.avi
繁体字幕就换为-subcp big5

另外一种方法是使用现成的随便哪个ttf字体,假设simsun.ttf字体在$home/.mplayer/目录下,那么播放的命令就是:
mplayer -font $home/.mplayer/simsun.ttf -sub $home/download/chs.srt -subcp cp936 $home/movie/abcdefg.avi

注意:你如果是自己编译安装的mplayer的话,编译时要加上-free-type的选项(具体怎么写不清楚),不然第二个方法不能用。所以还是用打好包的版本吧。
严重注意:对于英文locale的朋友,一定检查一下自己的i18n文件中LC_TYPE是否为LC_CTYPE=zh_CN.UTF-8,不然字幕显示的都是问号。
严重严重注意:有极少数字幕是utf-8编码的,最好先用文本编辑器确认一下。播放时把-subcp cp936改为unicode就可以了。

3、内嵌字幕。这个偶还没有遇到过。。。等碰到了再写出来。

二、没有声音或图像问题
罗嗦半天真累啊,咬牙接着写。没有声音和图像最大的原因就是没有解码器,加个plf源,把real-codecs和win32-codecs都装上。要注意的是mplayer的搜索路径可能和这两个codecs安装路径不一样,看一下mplayer的错误信息中提到在哪些目录下没有找到相应解码文件,然后拷过去。没有声音或者图像还有一个原因比较少见,但偶尔也会遇到。我曾经看一个后缀名为rmvb的电影,只有图像,没有声音。但是用realplayer 看就有声音。把realplayer目录下的解码文件全考到mplayer下面也不行。后来发现这个电影的声音编码比较怪(libfaad),由于版权的原因打包好的mplayer根本就没有提供对它的支持。装了一个plf源的mplayer,问题解决了。

三、在线看电影或者听歌。
这个方法不是利用mplayer的pluggin,而是利用mplayer可以从stdin播放的功能。比如,我们学校有好多电影ftp,我根本不用把电影完全下载到硬盘上,使用下面命令就可以在线播放。
wget -O - | mplayer -cache 8192 -
需要字幕?没问题,不过字幕需要先下载到硬盘上,字幕放到stdin里面是不行恴地。然后用上面提到的显示字幕的方法加载字幕。

再比如,我经常到music.zixia.net在线听歌,我可以完全不用xmms,我只需把m3u文件保存到硬盘上,然后用wget -i m3u -O - | mplayer -cache 1000 -
就可以听了。嘿嘿,爽吧。
 
移植到板子上的mplayer经常会退出。可以试试用格式工厂或者其他格式转换工具把视频文件转换的分辨率小一点,或许有用~ :)
阅读(1840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~