From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eduardo Ochs Subject: Re: Add a new link type for video files Date: Fri, 3 Jan 2020 17:02:51 -0300 Message-ID: References: <87y2uohprv.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:40190) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1inTA1-0001tI-C5 for emacs-orgmode@gnu.org; Fri, 03 Jan 2020 15:03:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1inT9z-0003pP-T9 for emacs-orgmode@gnu.org; Fri, 03 Jan 2020 15:03:05 -0500 Received: from mail-pf1-x444.google.com ([2607:f8b0:4864:20::444]:42956) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1inT9z-0003mY-Mq for emacs-orgmode@gnu.org; Fri, 03 Jan 2020 15:03:03 -0500 Received: by mail-pf1-x444.google.com with SMTP id 4so23960911pfz.9 for ; Fri, 03 Jan 2020 12:03:03 -0800 (PST) In-Reply-To: <87y2uohprv.fsf@gmail.com> 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" To: numbchild@gmail.com Cc: Org Mode Hi Stardiviner, just some quick comments on org-video-link-open... Eev also has functions for opening audio/video files at certain time offsets. They are called like this (with `C-e C-x C-e' or something equivalent), (find-video "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4") (find-video "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4" "1:17") and the sexps above pass these lists to start-process: ("mpv" "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4" "--fs" "--osd-level=2") ("mpv" "~/eev-videos/Punch_and_Judy_Mark_Poulton-K6LmZ0A1s9U.mp4" "--start" "1:17" "--fs" "--osd-level=2") I use mpv instead of mplayer because this page at the Wikipedia convinced me to: https://en.wikipedia.org/wiki/Mpv_(media_player) "--fs" means "full screen" and "--osd-level=2" shows the current time. If you know other emacs packages that implement opening audio or video files and skipping to a certain position please tell me - I would like to mention them in the comments of eev-audiovideo.el. I mentioned your previous message there, by the way! See: https://github.com/edrx/eev/blob/UTF-8/eev-audiovideo.el#L55 http://angg.twu.net/eev-current/eev-audiovideo.el.html http://angg.twu.net/eev-current/eev-audiovideo.el Cheers, Eduardo Ochs http://angg.twu.net/#eev http://angg.twu.net/emacsconf2019.html On Fri, 3 Jan 2020 at 06:15, stardiviner wrote: > > > I write a patch to add new link type: > > #+begin_example > [[video:/path/to/file.mp4::00:13:20]] > #+end_example > > This will open video file in specific timestamp. And it is possible to add more > options in link. Like video player arguments. > > I want to ask should I add this patch to Org Mode built-in? > > Here is my patch source code: > > #+begin_src emacs-lisp :file "ol-video.el" > ;;; [[video:/path/to/file.mp4::00:13:20]] > (defcustom org-video-link-open-command "mplayer" > "Specify the program for openning video: link." > :type 'string) > > (defvar org-video-link-extension-list '("avi" "rmvb" "ogg" "mp4" "mkv")) > > (defun org-video-link-open (uri) > "Open video file `URI' with video player." > (let* ((list (split-string uri "::")) > (path (car list)) > (start-timstamp (cadr list))) > (make-process > :command (list org-video-link-open-command > "-ss" start-timstamp > (expand-file-name (org-link-unescape path))) > :name "org-video-link"))) > > (defun org-video-complete-link (&optional arg) > "Create a video link using completion." > (let ((file (read-file-name "Video: " nil nil nil nil > #'(lambda (file) > (seq-contains-p > org-video-link-extension-list > (file-name-extension file))))) > (pwd (file-name-as-directory (expand-file-name "."))) > (pwd1 (file-name-as-directory (abbreviate-file-name > (expand-file-name "."))))) > (cond ((equal arg '(16)) > (concat "video:" > (abbreviate-file-name (expand-file-name file)))) > ((string-match > (concat "^" (regexp-quote pwd1) "\\(.+\\)") file) > (concat "video:" (match-string 1 file))) > ((string-match > (concat "^" (regexp-quote pwd) "\\(.+\\)") > (expand-file-name file)) > (concat "video:" > (match-string 1 (expand-file-name file)))) > (t (concat "video:" file))))) > > (org-link-set-parameters "video" > :follow #'org-video-link-open > :complete #'org-video-complete-link) > #+end_src > > -- > [ stardiviner ] > I try to make every word tell the meaning what I want to express. > > Blog: https://stardiviner.github.io/ > IRC(freenode): stardiviner, Matrix: stardiviner > GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 > >