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 支持这项工作]]

编辑推荐精选

Pixmax

Pixmax

一站式AI短剧创作平台

Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。

豆包

豆包

字节跳动旗下 AI 智能助手

字节跳动旗下 AI 智能助手

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

下拉加载更多