Emacs: วิธีเปิดและเล่นไฟล์วิดีโอ


9

หากฉันกำลังสำรวจระบบไฟล์ของฉันในโหมด Dired และฉันเจอไฟล์วิดีโอเช่นจะเป็นการดีที่ได้เล่นไฟล์วิดีโอนั้น ฉันจะทำสิ่งนี้ใน Emacs ได้อย่างไร

ฉันสามารถใช้ Emacs เพื่อเปิดไฟล์วิดีโอ แต่ผลลัพธ์ไม่เป็นประโยชน์มาก - ฉันเพิ่งได้รับไฟล์ที่เข้ารหัสเป็นข้อความ มีวิธีที่ Emacs สามารถเล่นไฟล์วิดีโอหรือเชื่อมโยงไปยังคำสั่งที่มีโปรแกรมอื่นเช่น vlc เล่นไฟล์หรือไม่?


2
บางทีคำตอบนี้อาจช่วยได้
Nsukami _

คำตอบ:


6

บน Linux ฉันทำสิ่งนี้ตลอดเวลา ในขณะที่อยู่ในdiredโหมดให้มีเคอร์เซอร์ที่ไฟล์ที่คุณต้องการดู

พิมพ์!ตามด้วยโปรแกรมที่คุณต้องการใช้

ฉันใช้mplayerดังนั้นฉันพิมพ์:

!mplayer

และนั่นคือมัน คุณสามารถใช้ vcl หรืออะไรก็ได้บนแพลตฟอร์มของคุณ:

!vlc

สิ่งที่ดีจริงๆเมื่อใช้ dired คือฉันได้รับหน้าต่างที่มีเอาต์พุต mplayer (ซึ่งฉันไม่ได้รับถ้ามีตัวแก้ไขไฟล์เช่นnautilusหรือthunarฉันคลิกขวาและขอให้ไฟล์นั้นจ้องกับ mplayer)

อย่างไรก็ตามไม่จำเป็นต้องมีมาโครหรือส่วนขยายใด ๆ แค่ ...!


ใช้&ในการทำแบบอะซิงโครนัสเช่น: &vlc- คุณจะได้รับ emacs ของคุณกลับมาโดยไม่จำเป็นต้องปิดคำสั่งเชลล์
Darshan Chaudhary

@DarshanChaudhary &vlcดูเหมือนจะไม่ทำงาน แต่vlc&ทำเช่นนั้น
otyn

@otyn ฉันคิดว่า Darshan วิธีใช้& แทน!ของ ดังนั้นเมื่อเคอร์เซอร์อยู่ในไฟล์ที่คุณต้องการเพียงแค่กด&และมันจะทำงานแบบอะซิงโครนัสไม่เหมือน!กัน
kotakotakota

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ลงรายการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.