[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Audio/video file playback in org mode

From: Eric Schulte
Subject: Re: [O] Audio/video file playback in org mode
Date: Thu, 09 Jun 2011 16:22:54 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

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

Cheers -- Eric

Paul Sexton <address@hidden> 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 "<C-kp-0>") 'bongo-pause/resume)
> (define-key org-mode-map (kbd "<C-kp-insert>") 'bongo-pause/resume)
> ;; Numpad Ctrl-.: stop current track, or restart from beginning if stopped
> (define-key org-mode-map (kbd "<C-kp-decimal>") 'bongo-start/stop)
> (define-key org-mode-map (kbd "<C-kp-delete>") 'bongo-start/stop)
> ;; Numpad Ctrl-PgUp, Ctrl-PgDn: raise/lower volume
> (define-key org-mode-map (kbd "<C-kp-prior>") 'bongo-volume-raise)
> (define-key org-mode-map (kbd "<C-kp-next>") 'bongo-volume-lower)
> (define-key org-mode-map (kbd "<C-kp-9>") 'bongo-volume-raise)
> (define-key org-mode-map (kbd "<C-kp-3>") 'bongo-volume-lower)
> ;; Numpad Ctrl-left, Ctrl-right: skip back/forward 10 seconds
> (define-key org-mode-map (kbd "<C-kp-left>") 'bongo-seek-backward-10)
> (define-key org-mode-map (kbd "<C-kp-right>") 'bongo-seek-forward-10)
> (define-key org-mode-map (kbd "<C-kp-4>") 'bongo-seek-backward-10)
> (define-key org-mode-map (kbd "<C-kp-6>") 'bongo-seek-forward-10)

Eric Schulte

reply via email to

[Prev in Thread] Current Thread [Next in Thread]