ready-player

ready-player

Emacs内置多媒体文件播放模式

Ready Player Mode为Emacs提供了一个轻量级主模式,支持在缓冲区中播放音频和视频文件。该模式具备缩略图显示、元数据提取和播放控制功能,允许自定义媒体类型和播放命令。它通过集成mpv、ffmpeg等外部工具,实现了媒体播放和处理,为用户提供了简洁的文件管理和播放界面。

EmacsReady Player Mode媒体播放插件自定义Github开源项目

👉 [[https://github.com/sponsors/xenodium][通过GitHub Sponsors支持这项工作]]

  • Ready Player模式

一个轻量级的主要模式,用于在Emacs缓冲区中打开媒体(音频/视频)文件。

#+HTML: <img src="https://yellow-cdn.veclightyear.com/835a84d5/89d2c969-ec5d-44f7-907b-781b17d27ab0.png" width="50%" />

#+HTML: <img src="https://yellow-cdn.veclightyear.com/835a84d5/2de612de-6ae1-4276-9019-9294f4aba2dc.png" width="70%" />

  • 安装 / 设置

这个包可在MELPA上获得:

#+begin_src emacs-lisp :lexical no (use-package ready-player :ensure t :config (ready-player-mode +1)) #+end_src

要自定义支持的媒体文件,请在切换ready-player-mode之前设置ready-player-supported-media。

  • 切换识别

您可以通过M-x ready-player-mode交互式地打开或关闭媒体识别。

  • 外部依赖

** 播放

ready-player-mode依赖命令行工具来播放媒体。

默认情况下,ready-player-mode会尝试使用mpv、vlc、ffplay或mplayer(按此顺序)。可以根据您的偏好自定义ready-player-open-playback-commands。

使用您喜欢的方法安装其中任何一个。

在macOS上:

#+begin_src sh brew install mpv #+end_src

** 元数据

元数据使用ffprobe提取,它与ffmpeg捆绑在一起。

使用您喜欢的方法安装。

在macOS上:

#+begin_src sh brew install ffmpeg #+end_src

** 缩略图

ready-player-mode优先使用ffmpegthumbnailer生成缩略图,但如果没有它则会回退到ffmpeg。

使用您喜欢的方法安装。

在macOS上:

#+begin_src sh brew install ffmpegthumbnailer #+end_src

  • 自定义

** 视频与音频

如果您想使用不同的工具来播放视频和音频,可以使用ready-player-open-playback-commands来实现,例如:

#+begin_src emacs-lisp :lexical no (setq ready-player-open-playback-commands '((ready-player-is-audio-p "mpg123") (ready-player-is-video-p "mpv"))) #+end_src

#+BEGIN_SRC emacs-lisp :results table :colnames '("自定义变量" "描述") :exports results (let ((rows)) (mapatoms (lambda (symbol) (when (and (string-match "^ready-player" (symbol-name symbol)) (not (string-match "--" (symbol-name symbol))) (or (custom-variable-p symbol) (boundp symbol))) (push (,symbol ,(car (split-string (or (get (indirect-variable symbol) 'variable-documentation) (get symbol 'variable-documentation) "") "\n"))) rows)))) rows) #+END_SRC #+RESULTS: | 自定义变量 | 描述 | |-----------------------------------------------------------+-------------------------------------------------------| | ready-player-supported-media | 支持的媒体类型。 | | ready-player-thumbnail-max-pixel-height | 缩略图最大像素高度。 | | ready-player-supported-video | 支持的视频媒体。 | | ready-player-shuffle | 在当前目录内随机选择下一个媒体项目。 | | ready-player-mode-hook | 进入或离开ready-player-mode'时运行的钩子。 | | ready-player-play-icon | 播放按钮图标字符串,例如:"⏵"。 | | ready-player-previous-icon | 上一个按钮图标字符串,例如:"<<"。 | | ready-player-multi-buffer | 非空时,启用打开多个缓冲区进行并行播放。 | | ready-player-cache-metadata | 非空时,缓存元数据。 | | ready-player-cache-thumbnails | 非空时,缓存缩略图。 | | ready-player-major-mode-hook | 进入Ready Player模式后运行的钩子。 | | ready-player-supported-audio | 支持的音频媒体。 | | ready-player-mode | 如果Ready-Player模式启用,则为非空。 | | ready-player-stop-icon | 停止图标字符串,例如:"■"。 | | ready-player-shuffle-icon | 随机播放图标字符串,例如:"⤮"。 | | ready-player-repeat | 如果当前目录中还有更多媒体,则继续播放。 | | ready-player-autoplay | 非空时,媒体文件打开时自动开始播放。 | | ready-player-open-externally-icon | 外部打开按钮图标字符串,例如:"➦"。 | | ready-player-show-thumbnail | 非空时,如果可用则显示文件的缩略图。 | | ready-player-hide-modeline | 如果非空,则隐藏缓冲区中的模式行。 | | ready-player-next-icon | 下一个按钮图标字符串,例如:">>"。 | | ready-player-major-mode-map | ready-player'的键盘映射。 | | ready-player-autoplay-icon | 自动播放图标字符串,例如:"⚡"。 | | ready-player-open-playback-commands | 尝试用于播放的命令行工具。 | | ready-player-major-mode-syntax-table | ready-player-major-mode'的语法表。 | | ready-player-display-dired-playback-buffer-display-action | 选择如何显示关联的播放`dired'缓冲区。 | | ready-player-repeat-icon | 重复播放图标字符串,例如:"⇆"。 |

** 按钮(macOS SF Symbols)

默认情况下,如果可用,=ready-player-mode= 将尝试使用 macOS [[https://developer.apple.com/sf-symbols/][SF Symbols]] 作为 =ready-player-play-icon=、=ready-player-stop-icon= 和 =ready-player-open-externally-icon=。

你需要在 Emacs 中[[https://lmno.lol/alvaro/emacs-insert-and-render-sf-symbols][启用 SF 符号渲染]] /(在加载 =ready-player.el= 之前)/。

#+begin_src emacs-lisp :lexical no (when (memq system-type '(darwin)) (set-fontset-font t nil "SF Pro Display" nil 'append)) #+end_src

** 按钮(Linux)

如果 macOS SF Symbols 不可用,则使用 =<< ⏵ ■ >> ➦ ⇆= 作为备选。这些可以自定义(参见所有图标变量),但可能不是最佳选择。欢迎提供建议!

  • 命令

#+BEGIN_SRC emacs-lisp :results table :colnames '("命令" "描述") :exports results (let ((rows)) (mapatoms (lambda (symbol) (when (and (string-match "^ready-player" (symbol-name symbol)) (commandp symbol)) (push (,(string-join (seq-filter (lambda (symbol) (not (string-match "menu" symbol))) (mapcar (lambda (keys) (key-description keys)) (or (where-is-internal (symbol-function symbol) comint-mode-map nil nil (command-remapping 'comint-next-input)) (where-is-internal symbol ready-player-major-mode-map nil nil (command-remapping symbol)) (where-is-internal (symbol-function symbol) ready-player-major-mode-map nil nil (command-remapping symbol))))) " 或 ") ,(symbol-name symbol) ,(car (split-string (or (documentation symbol t) "") "\n"))) rows)))) rows) #+END_SRC #+结果: | d | ready-player-view-dired-playback-buffer | 查看关联的 dired' 播放缓冲区。 | | | ready-player-set-album-artwork | 选择图片并设置为专辑封面。 | | | ready-player-lookup-song | 在 Discogs 上查找当前歌曲。 | | u | ready-player-unmark-dired-file | 在相应的 dired' 缓冲区中取消标记当前文件。 | | | ready-player-stop | 停止媒体播放。 | | SPC | ready-player-toggle-play-stop | 切换媒体播放/停止。 | | | ready-player-play | 开始媒体播放。 | | g | ready-player-reload-buffer | 从文件重新加载媒体。 | | o 或 e | ready-player-open-externally | 在默认外部程序中打开访问的文件。 | | | ready-player-toggle-autoplay | 切换自动播放设置。 | | | ready-player-toggle-modeline | 切换显示模式行。 | | | ready-player-mode | 切换 Ready Player 模式媒体文件识别。 | | | ready-player-version | 显示 Ready Player Mode 版本。 | | | ready-player-toggle-shuffle | 切换随机播放设置。 | | n | ready-player-next | 打开同一目录中的下一个媒体文件。 | | p | ready-player-previous | 打开同一目录中的上一个媒体文件。 | | q | ready-player-quit | 退出 ready-player-major-mode' 窗口并关闭缓冲区。 | | | ready-player-major-mode | 预览和播放媒体文件的主要模式。 | | | ready-player-toggle-repeat | 切换重复播放设置。 | | TAB | ready-player-next-button | 导航到下一个按钮。 | | <backtab> | ready-player-previous-button | 导航到上一个按钮。 | | | ready-player-download-album-artwork | 下载专辑封面。 | | m | ready-player-mark-dired-file | 在相应的 dired' 缓冲区中标记当前文件。 | | | ready-player-load-dired-playback-buffer | 打开 dired' 缓冲区。如果 DIRED-BUFFER 为空,则提供选择选项。 |

👉 [[https://github.com/sponsors/xenodium][通过 GitHub Sponsors 支持这项工作]]

编辑推荐精选

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

下拉加载更多