Emacs: как открыть и воспроизвести видео файл


9

Если я изучаю свою файловую систему в режиме Dired и сталкиваюсь, например, с видеофайлом, было бы неплохо иметь возможность воспроизвести этот видеофайл. Как я могу сделать это в Emacs?

Я могу использовать Emacs для открытия видеофайла, но результат не очень полезен - я просто отображаю закодированный файл в виде текста. Есть ли способ, которым Emacs может воспроизводить видеофайлы, или, возможно, связать его с командой, в которой другая программа, например, vlc, воспроизводит файл?


2
Может быть, этот ответ может помочь
Nsukami _

Ответы:


6

На Linux я делаю это все время. В diredрежиме наведите курсор на файл, который хотите просмотреть.

Введите !, а затем программу, которую вы хотите использовать.

Я использую mplayer, поэтому я печатаю:

!mplayer

И это все. С тем же успехом вы можете использовать vlc или все, что работает на вашей платформе:

!vlc

Что действительно хорошо, используя dired, так это то, что я получаю окно с выводом mplayer (которого я не получаю, если с помощью редактора файлов, такого как nautilusили thunar, я щелкаю правой кнопкой мыши и запрашиваю просмотр файла с помощью mplayer).

Во всяком случае, не нужно никаких макросов или расширений. Просто ...!


используйте, &чтобы сделать это асинхронно, например: &vlc- вы получите свой emacs обратно без необходимости закрывать команду оболочки
Даршан Чаудхари

@DarshanChaudhary &vlc, похоже, не работает, но vlc&работает.
Оты

@otyn я думаю Darshan средства , используя & вместо из !. поэтому, когда курсор находится на файле, который вы хотите, просто нажмите, &и это запустит его асинхронно в отличие от !.
котакотакота

2

Dired + помогает в этом, но даже ванильный Dired предлагает основы того, что вам нужно.

Этот ответ расскажет вам, как, подробно. В нем объясняется, как использовать любую внешнюю программу для доступа к любому файлу, хотя вопрос, на который она отвечает, касается только использования внешнего средства просмотра PDF для просмотра файлов PDF.

Ответ также зависит в некоторой степени от того, какую платформу вы используете. В частности, если вы используете MS Windows, вы можете воспользоваться преимуществами ассоциаций файлов Windows и т. Д.


2

Я описал мою настройку VLC в этом посте . Что действительно круто в этом, так это то, что дочерний процесс nohupзакрывается, так что вы можете безопасно перезапустить или закрыть Emacs без автоматического закрытия VLC.

Вот код:

(require 'dired-aux)
(defvar dired-filelist-cmd
  '(("vlc" "-L")))
(defun dired-start-process (cmd &optional file-list)
  (interactive
   (let ((files (dired-get-marked-files
                 t current-prefix-arg)))
     (list
      (dired-read-shell-command "& on %s: "
                                current-prefix-arg files)
      files)))
  (let (list-switch)
    (start-process
     cmd nil shell-file-name
     shell-command-switch
     (format
      "nohup 1>/dev/null 2>/dev/null %s \"%s\""
      (if (and (> (length file-list) 1)
               (setq list-switch
                     (cadr (assoc cmd dired-filelist-cmd))))
          (format "%s %s" cmd list-switch)
        cmd)
      (mapconcat #'expand-file-name file-list "\" \"")))))

(define-key dired-mode-map "r" 'dired-start-process)

Другая вещь, которую делает код, заключается в том, что он позволяет пометить несколько файлов m, а затем поставить их в очередь в список воспроизведения VLC.


0

Следующий фрагмент будет работать в операционной системе OSX только для одного файла, в котором находится курсор в данный момент - код не предусматривает проверку расширения файла и / или определение правильного приложения, соответствующего расширению файла:

(start-process
  "my-process-name" ;; process name
  nil ;; buffer output name, if an output buffer is so desired.
  "open" ;; argument 1
  "-a" ;; argument 2
  "/Applications/VLC.app/Contents/MacOS/VLC" ;; argument 3
  (dired-get-file-for-visit)) ;; argument 4

Если оригинальный постер хочет иметь дело с открытием нескольких отмеченных файлов, то используйте dired-get-marked-filesи mapcarвниз по списку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.