现在的位置: 首页 > 综合 > 正文

Linux下的万能播放器–mplayer

2011年08月21日 ⁄ 综合 ⁄ 共 2744字 ⁄ 字号 评论关闭
文章目录

1. 前言

  首先需要说明的是,mplayer并不只有Linux的版本,也有Windows版的,并且也有相当多的用户。这篇文章主要是记录我配置使用mplayer中碰到的一些问题和解决方案。mplayer本身功能很强大,但是,强大的功能,往往需要经过一番调教,才能变得易用(sigh... Linux软件就是这一点不好……)。

2. 编译安装mplayer

  绝大多数Linux发行版都可以直接从源里面安装mplayer,如在Debian中可以直接:
  sudo apt-get install mplayer
  但是源里面的软件一般都不是最新的,同时笔者有一点点“洁癖”,很多软件都喜欢自己编译一下,主要为了尽可能在编译时去掉那些我不用的特性(我是不是该用Gentoo?)。
  我是直接下载的svn源码:

  svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer 

  简单看一下里面的README文件,开始编译:
  ./configure --libdir=/usr/lib/ --enable-gui --language=en,zh_CN --enable-menu
  make -j 2
  make install
  参数就不解释了,./configure --help中可以看到。编译安装完了之后,发现-vo不能使用xv,只能用x11,这显然有点不爽。刚开始还以为是自己的显卡不行(915集显,确实很糟……),后来查看configure.log文件,找到Checking for xv这一段,发现问题出在没有找到X11/Xlib.h这个头文件,于是

  apt-file search Xlib.h

  找到了libx11-dev这个包,安装上,再重新configure && make之后,-vo就能用xv了。

  写下上面这一段的主要原因,主要是想强调一点,当碰到问题时,应该学会自己寻找问题的根源,并解决,这往往比google的效率还要高一些。

3. 配置文件

  ~/.mplayer/config,自己新建,我的文件内容如下:
    
    vo=xv,gl_nosw,x11
    ao=alsa,oss

    font='WenQuanYi Micro Hei'
    sub-fuzziness=1
    #subcp=enca:zh:cp936
    subcp=cp936
    subfont-autoscale=2
    subfont-osd-scale=2.5
    subfont-text-scale=3
    ass=true
    embeddedfonts=true
    slang=en,zh
    sid=0

    cache=8192
    skin=iTunes

  其中,关于字幕的说明见这里:http://blog.chinaunix.net/u1/53025/showart_1737097.html
  皮肤文件可以从上面给出的mplayer下载页面得到。下载后解压到~/.mplayer/Skins即可。skin是给gmplayer用的,第一次启动gmplayer时,会根据config文件生成几个gui.*的配置文件,以后这些配置就根config独立了,所以再修改config不会影响到gui.*,如果要修改的话,主要要修改两处。

  一些常用的快捷键在manpages中写的很详细,这里有一份很精简的介绍。 

4. 播放APE

  以前一直用的audacious播放ape,但它的CPU占用率太高,在我电脑上播放同一个ape,audacious占用20%+的CPU,而mplayer只占用5%左右,立刻就将audacious卸载了……
  但随之带来了一个问题,mplayer并不认cue sheet,所以就无法分曲跳转了。网上搜索了一把,似乎没有解决方案,于是决定分割ape文件。在网上随便一搜,马上就有了答案:shntool,具体做法可以参考这篇文章

5. 全局快捷键

  我想这也许算是这篇文章的重点吧,前面的内容网上基本都能搜索到,全局快捷键我在网上似乎没有找到什么好的解决方法。笔者这两天刚好用了下xdotool,发现可以向窗口模拟发送按键动作,于是尝试之,但碰到一个问题,mplayer并不会修改它所在的那个terminal的标题,而我一般开好几个terminal,因此无法通过标题找到mplayer的窗口。半天之后顿悟,为啥非得用终端的mplayer,而不用gmplayer呢?立刻尝试用gmplayer,有独立的窗口,顺利通过

  xdotool search --title "mPlayer"

找到,下面是一个简单的控制脚本:

    #!/bin/bash

    WID=`xdotool search --title mPlayer | head -n 1`
    if [ "x$WIDx" == "xx" ]; then echo "No mplayer window found." fi
    case $1 in
        play)
            xdotool type --window $WID " "
            ;;
        pause)
            xdotool type --window $WID " "
            ;;
        next)
            xdotool type --window $WID ">"
            ;;
        prev)
            xdotool type --window $WID ">"
            ;;
        vup)
            xdotool type --window $WID "0"
            ;;
        vdown)
            xdotool type --window $WID "9"
            ;;
        quit)
            xdotool type --window $WID "q"
            ;;
        *)
            echo "unknow arg: $1"
            ;;
    esac

 

  用这个脚本可以很方便的控制mplayer:control-mplayer prev/next/...
  再使用gnome的metacity绑定全局热键,完美搞定!

6. TODO

  下一步打算研究一下怎样提取google音乐的榜单以及对应音乐的地址,写个脚本,可以直接在命令行打开mplayer播放指定的榜单。

 

转载请注明出处:http://www.cnblogs.com/stephenjy/archive/2010/03/02/1676762.html  

抱歉!评论已关闭.