[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: Alan E. Davis
Subject: Re: [O] Audio/video file playback in org mode
Date: Sun, 12 Jun 2011 09:55:43 +1000

I'll jump in and mention a solution to an at least similar problem I hacked, albeit incompletely, some time ago.  I baldly stole code from "dired-mplayer" at http://www.emacswiki.org/cgi-bin/wiki/EMMS#toc10 , and have been using the result, "dired-vlc" ever since.   The main point of this was to play videos asynchronously, so I could continue editing, taking notes using the relative timer of org-mode.  

Two more things would make this process work better, at least for me:

   1. write a few lines into this that would open another buffer, possibly through capture, starting the relative timer automagically.
   2. figure out how to pause the video and the timer simultaneously.

Here is the code to dired-vlc.  I am not interested in making this work for windows, have no idea whether it would, or how to make it do so.

;;  -*- mode: elisp -*-
;; Time-stamp: <2009-01-13 14:27:47 orm>
;; AED 05 January 2009

(require 'org)

(defvar dired-vlc-program "/usr/bin/vlc")

(defun dired-vlc (&optional timer)
  "Asynchronously start vlc on file through dired.  If an optional
argument is given (C-u), the org relative timer is started.  This
function purports to start vlc in rc mode, to leave open the
possibility of remote control."
  (interactive "P")
  (let ((file (expand-file-name (dired-get-filename)))
        ext files basename dir curr-file ;idx-file sub-file srt-file
    command options)
    (setq basename (file-name-nondirectory
            (file-name-sans-extension file)))
    (setq dir (file-name-directory file))
    (setq files (directory-files dir t basename))
    (delete file files)
    (setq command (format "\"%s\" \"%s" dired-vlc-program "--intf rc"))
    (if (y-or-n-p (format "Run command %s?" command))
        (start-process "junk" nil dired-vlc-program file)))
  (if (equal timer '(4)) (org-timer-start))

;; end dired-vlc.el

I am interested in what you are doing, also, and I will try it out in a month or two, after I retire and relocate.

Alan Davis

On Sun, Jun 12, 2011 at 12:00 AM, Memnon Anon <address@hidden> wrote:
Paul Sexton <address@hidden> writes:

> brian powell <briangpowellms <at> gmail.com> writes:
>> * Something like this; respectively!?: 
>> [[shell:mplayer -ss 00:03:21 -endpos 00:06:54 ~/some_podcast.mp3 &]]
>> [[shell:mplayer -ss 00:03:21 ~/some_podcast.mp3 &]]
>> [[shell:mplayer ~/some_podcast.mp3 &]]
> The troubles with using shell commands in hyperlinks:
> 1. Only works in the operating system and directory structure where
>    you were when you wrote the link;
> 2. No ability to stop playback, pause, etc, unless you run the
>    program as a GUI, which means (horror!) doing something outside
>    Emacs.

If you are using different setups on different operating systems, 1)
should probably be solved in some general fashion, like setting some
vars to important locations depending on environmentearly in your .emacs.

   [[elisp:(emms-play-file "~/tmp/video/magit.flv")]]
   [[elisp:(emms-play-file (concat MYSCREENCASTSDIR "magit.flv"))]]
[[elisp:(emms-play-file (concat MYSCREENCASTSDIR "magit.flv"))][View magit demo]]

Of course, there is no problem with setting up org to treat file links to
mediafiles special. But given the power of org hyperlinks, I think using
"elisp:" solves your 1.) and 2.) sufficiently.


reply via email to

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