Knock knock, English Help.
将 MPV 跟 EMMS/ffmpeg/yt-dlp/Org-Mode 等有机结合,娱乐、学习两不误:
- 支持本地视频、网络视频、网络直播 (也支持音频、弹幕)
- 可以在 Emacs 中灵活地控制播放进度、播放速度等
- 可以方便地对视频进行下载、转码、截图、OCR 等操作
- 跟 Org Mode 深度集成,视频笔记、轻轻松松 (带时间戳的链接)
- 可以控制 EMMS 播放的视频和音频。为 EMMS 增加了 Windows 平台的支持
结合下面项目可以更方便观看 B 站视频:
这是很久之前知识焦虑的时候,为了消化收藏夹中的视频而写。
最近几天将其翻新了一下。因为发现用它来拉片、看直播,简直不要太爽!
基于 EMMS,请确保其已安装。然后下载并加载本包 (require 'mpvi)
。
之后安装相关依赖。除了 mpv 是必须的外,其他的是可选的:
- yt-dlp,如果要看网络视频,这个必须要安装
- ffmpeg,用来对视频进行剪辑之类的操作
- tesseract,如果需要文字识别 (OCR) 功能才安装
- danmaku2ass,安装这个后,看 B 站视频就有弹幕啦
- seam,用来解析直播链接,要看直播的需要安装
对于 Arch Linux 用户,一键安装依赖:
yay -S mpv yt-dlp ffmpeg tesseract danmaku2ass-git seam-git xclip
对于 Windows 用户,danmaku2ass 和 seam 需要从 Github 下载,其他可以通过 winget 或 scoop 安装:
winget install mpv yt-dlp ffmpeg Tesseract-OCR
核心命令:
mpvi-open
,打开视频文件或网络链接mpvi-seek
,通过 minibuffer 的方式对播放的视频进行控制mpvi-insert
,在 org buffer 中插入当前播放视频的带时间戳的链接mpvi-clip
,借助 ffmepg/ytdlp 实现视频的下载、剪辑、转码mpvi-emms-add
,向 EMMS playlist 中添加视频路径或链接
其中 mpvi-seek
是最常用的,它通过 minibuffer 集成了很多功能。比如:
i
在 buffer 中插入时间戳链接Space
切换暂停与播放j/k/l
调整播放速度n/p/N/P/M-n/M-p/C-l
等实现各种维度的播放进度调整s/C-s/C-i
等实现各种方式的截图r/C-r
对当前播放页面进行 OCR 识别并复制结果t/C-t
复制当前页面的字幕或弹幕c/C-c
下载、裁剪、转码当前播放视频v/C-v
切换网络视频 playlist/category 里的视频o/C-o
切换到系统默认程序 (比如浏览器) 打开当前播放视频q/C-q
退出 minibuffer
时间戳是一个 [mpv:https://xxx.com#10-30]
格式的链接,可以直接点击。光标置于其上,有如下快捷键:
, ,
播放当前链接中的视频, s
进入到mpvi-seek
界面, a
更改链接中视频的开始时间, b
更改链接中视频的结束时间, v
预览链接中视频时间戳位置的画面, c
视频的下载、转码、截取。All In One, 很好用
其他补充:
- 详细的快捷键参见 map 定义:
mpvi-open-map
,mpvi-seek-map
,mpvi-org-link-map
。不合意可自行扩展、重新绑定 - 如果纯粹看视频/直播,并通过 minibuffer 操控 MPV,并不需要 Org Mode。但进行插入、编辑操作则必须在 Org Mode Buffer 中
- 支持视频分 P 播放。比如,可以直接用
mpvi-open
打开 B 站播放列表 url 或专栏合集 url。也可以通过mpvi-emms-add
一次将所有分 P 视频都添加到 EMMS 中,之后通过 EMMS 管理列表并控制播放 - yt-dlp 对播放列表 (playlist) 信息的返回不够详细不够友好。这导致打开视频链接的时候可能会卡顿一下,并且切换列表的时候不会显示分 P 标题。这个只能通过上游解决,我懒得去提 PR,有点难受
- 目前直播仅支持斗鱼和抖音。其他的可以仿照
mpvi-ps.el
中的代码自行扩展。我不看其他的,所以没加 - 最大的遗憾是,看直播的时候没弹幕。这种实时弹幕,不知道有没有啥实现的思路
- 本来想把
danmaku2ass
和解析直播链接也用elisp
重新实现一下的。后面想想这简直是自寻烦恼,这种洁癖要不得,第三方的依赖不差这一两个,因此作罢 - 结合视频网站的 API 可以实时抓取其收藏夹、热门视频等,结合本包食用,特别香;通过 EMMS 对视频列表进行管理,特别方便;再结合 Org Mode 对视频进行分类、整理,更香;再加上带视频时间戳链接的笔记,完美。现在基本可以做到不打开网页看 B 站视频了 (https://github.com/lorniu/bilibili.el)
这个项目的初衷是自己爽。现在整理出来,如果有人喜欢,我也会很开心。
欢迎大家沟通交流,互相学习、共同进步。
感谢社区中的类似项目,你们给我了更多灵感。
感谢 mpv/ffmpeg/emacs 等开源软件,你们让世界更美好。
最后,感谢所有贡献了优秀视频的平台和作者,你们让我更焦虑、也更强大(误)。