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