Project Icon

ready-player

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

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

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

  • Ready Player模式

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

#+HTML:

#+HTML:

  • 安装 / 设置

这个包可在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 | 导航到下一个按钮。 | | | 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 支持这项工作]]

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号