From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: Audio/video file playback in org mode Date: Thu, 09 Jun 2011 16:22:54 -0600 Message-ID: <87ipsetzk1.fsf@gmail.com> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([140.186.70.92]:45924) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QUnd5-0003Cv-47 for emacs-orgmode@gnu.org; Thu, 09 Jun 2011 18:23:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QUnd1-0006O6-SY for emacs-orgmode@gnu.org; Thu, 09 Jun 2011 18:23:06 -0400 Received: from mail-pz0-f41.google.com ([209.85.210.41]:44560) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QUnd1-0006Nq-2e for emacs-orgmode@gnu.org; Thu, 09 Jun 2011 18:23:03 -0400 Received: by pzk4 with SMTP id 4so1157798pzk.0 for ; Thu, 09 Jun 2011 15:23:01 -0700 (PDT) In-Reply-To: (Paul Sexton's message of "Thu, 9 Jun 2011 21:55:17 +0000 (UTC)") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Paul Sexton Cc: emacs-orgmode@gnu.org Very cool, Would you mind posting this to Worg to increase that chances that it will be found by future Orgers? The first place that comes to mind is the org-hacks page at http://orgmode.org/worg/org-hacks.html Cheers -- Eric Paul Sexton writes: > I have spent a few hours figuring this out so I thought I would post it for > the benefit of others. > > I am learning a language, and wanted to include hyperlinks to audio files > within my org document, and be able to play each file by clicking on the > link. > > I eventually discovered the variable 'org-file-apps' which allows you to > associate particular applications with particular file types. > > I am using Bongo (https://github.com/dbrock/bongo) as the media player. > EMMS is another actively developed media player, but setup looked too > complicated at first glance. > > I am using MPlayer as the actual media player. This supports almost all > audio and video file formats. Most importantly, it works on Windows as well > as on Linux (VLC has a Windows port but it doesn't work with Bongo as the > 'fake-tty' interface is not implemented on Windows.) > > My current setup means that clicking on a link such as [[file:song.mp3]] > adds it to the active Bongo playlist (in another buffer) and immediately > starts playing it. Playback can be paused, fast-forwarded etc using > Bongo. > > When Bongo plays a file it puts some icons in the modeline that > resemble the 'play', 'stop' etc symbols, and can be used to control > playback using the mouse. I found these worked erratically outside > the actual Bongo playlist buffer, so I have instead bound some > org-mode keys (ctrl + numpad keys) to the relevant functions. > This is optional of course. > > I have only tested this with mp3 files, but it ought to work with > video as well. > > > My setup follows: > ------------------- > > ;;; Part 1. Bongo setup > > (add-to-list 'load-path "/path/to/bongo")) > (autoload 'bongo "bongo" > "Start Bongo by switching to a Bongo buffer." t) > > (setq bongo-mplayer-program-name > (case system-type > ((windows-nt cygwin) "c:\\Program Files\\MPlayer for Windows\\MPlayer.exe") > (t "mplayer"))) > > (setq bongo-enabled-backends '(mplayer)) > > ;;; Part 2. Org setup > > (defvar av-file-regex > (concat "\\." (regexp-opt > (append bongo-audio-file-name-extensions > bongo-video-file-name-extensions)) "$")) > > (add-to-list 'org-file-apps > (cons av-file-regex '(org-play-media-file file))) > > (defun org-play-media-file (filename) > (with-bongo-buffer > (bongo-insert-file filename) > (backward-char) > (bongo-play))) > > ;;; Part 3. Keybindings to allow control of playback within Org buffer > ;;; (optional) > > ;; Numpad Ctrl-0: pause/resume > (define-key org-mode-map (kbd "") 'bongo-pause/resume) > (define-key org-mode-map (kbd "") 'bongo-pause/resume) > ;; Numpad Ctrl-.: stop current track, or restart from beginning if stopped > (define-key org-mode-map (kbd "") 'bongo-start/stop) > (define-key org-mode-map (kbd "") 'bongo-start/stop) > ;; Numpad Ctrl-PgUp, Ctrl-PgDn: raise/lower volume > (define-key org-mode-map (kbd "") 'bongo-volume-raise) > (define-key org-mode-map (kbd "") 'bongo-volume-lower) > (define-key org-mode-map (kbd "") 'bongo-volume-raise) > (define-key org-mode-map (kbd "") 'bongo-volume-lower) > ;; Numpad Ctrl-left, Ctrl-right: skip back/forward 10 seconds > (define-key org-mode-map (kbd "") 'bongo-seek-backward-10) > (define-key org-mode-map (kbd "") 'bongo-seek-forward-10) > (define-key org-mode-map (kbd "") 'bongo-seek-backward-10) > (define-key org-mode-map (kbd "") 'bongo-seek-forward-10) > > > > -- Eric Schulte http://cs.unm.edu/~eschulte/