在Emacs中播放多媒体文件挺有用的,起码可以和学习套上关系,呵。比如说,你在边写文档的时候,不用切换,直接在Emacs里打开一个多媒体的buffer,听你所想听,随时用快捷键来个暂停之类的,一点也不影响你的写作思维,方便极了~~

在Emacs里播放多媒体文件,实际上是用Emacs作为播放器的控制前端,而用其他能对多媒体进行解码的工具作为真正播放多媒体文件的工具。这些播放软件有mplayermpg123mpg321等等。推荐用Emacs的EMMS mode作为前端,而用扩展性强的mplayer作为后台的播放软件。

我现在用的是Windows操作系统,现在就介绍一下在Windows下,安装配置Emacs EMMSmplayer的方法。

1) 把mplayer下载下来,编译好(或者直接下载一个编译好的binary版本)扔到某一个目录里。

2) 把mplayer所在的目录加到Windows的path里,这样你在Windows里就能以最快捷的方法来访问你的mplayer了。

如果后面在使用EMMS的时候,Emacs提示说“don’t know how to play track”,则表明你没有装上合适的播放器,应该回来检查这一步。

3) 下载EMMS包,解压后扔到你的Emacs配置目录里去,在我电脑上是~/emacs/site-lisp。

4) 新建一个elisp文件,我把它叫做emacs-emms.el,并且在.emacs文件里自动导入它

(load-file “~/emacs/site-lisp/emacs-emms.el”)

5) 打开emacs-emms.el对EMMS进行配置。基本的配置可以参考EMMS包里README文件的叙述,我自己则只进行了一些简单的配置。首先,导入EMMS包所在的位置和设置默认的播放器:

(add-to-list ‘load-path “~/emacs/site-lisp/emms-3.0”)
(require ’emms-setup)
(emms-standard)
(emms-default-players)

然后,借鉴星黎殿里的方法,设置一些全局的快捷播放键:

;; global key-map
(global-set-key (kbd “H-x”) ’emms-playlist-mode-go)

(global-set-key (kbd “C-c e t”) ’emms-play-directory-tree)
(global-set-key (kbd “C-c e x”) ’emms-start)
(global-set-key (kbd “C-c e v”) ’emms-stop)
(global-set-key (kbd “C-c e n”) ’emms-next)
(global-set-key (kbd “C-c e p”) ’emms-previous)
(global-set-key (kbd “C-c e o”) ’emms-show)
(global-set-key (kbd “C-c e h”) ’emms-shuffle)
(global-set-key (kbd “C-c e e”) ’emms-play-file)
(global-set-key (kbd “C-c e f”) ’emms-play-playlist)
(global-set-key (kbd “C-c e SPC”) ’emms-pause)
(global-set-key (kbd “C-c e a”) ’emms-add-directory-tree)

(global-set-key (kbd “C-c e r”)   ’emms-toggle-repeat-track)
(global-set-key (kbd “C-c e R”)   ’emms-toggle-repeat-playlist)

(global-set-key (kbd “C-c e s u”) ’emms-score-up-playing)
(global-set-key (kbd “C-c e s d”) ’emms-score-down-playing)
(global-set-key (kbd “C-c e s o”) ’emms-score-show-playing)

;; playlist-mode-map
(define-key emms-playlist-mode-map (kbd “SPC”) ’emms-pause)
(define-key emms-playlist-mode-map (kbd “+”) ’emms-volume-raise)
(define-key emms-playlist-mode-map (kbd “-“) ’emms-volume-lower)
(define-key emms-playlist-mode-map (kbd “”)
  (lambda () (interactive) (emms-seek +10)))
(define-key emms-playlist-mode-map (kbd “”)
  (lambda () (interactive) (emms-seek -10)))
(define-key emms-playlist-mode-map (kbd “”)
  (lambda () (interactive) (emms-seek +60)))
(define-key emms-playlist-mode-map (kbd “”)
  (lambda () (interactive) (emms-seek -60)))
(define-key emms-playlist-mode-map (kbd “S u”) ’emms-score-up-file-on-line)
(define-key emms-playlist-mode-map (kbd “S d”) ’emms-score-down-file-on-line)
(define-key emms-playlist-mode-map (kbd “S o”) ’emms-score-show-file-on-line)
(define-key emms-playlist-mode-map (kbd “S l”) ’emms-score-less-tolerant)
(define-key emms-playlist-mode-map (kbd “S m”) ’emms-score-more-tolerant)
(define-key emms-playlist-mode-map (kbd “S t”) ’emms-score-set-tolerance)
(define-key emms-playlist-mode-map (kbd “S s”) ’emms-score-show-playing)

这样,我们完成了对Emacs的基本配置。配置完成后,重启你的Emacs,你就可以在Emacs任意的Buffer里,用C-c e x来开始播放你设定好的播放列表。

当然,你可以用M-x emmsM-x emms-playlist-mode-go等命令来手工打开emms的播放面板。在这个面板里,可以用键盘上的左、右、上、下方向键来控制当前曲目的快进快退等功能。

不过好像EMMS的默认设置,并不能读取文件名中包含中文的多媒体文件。