年底KPI之:差生文具多,利用看视频来学习英语 <eaf-video-player> 以及 <web-video-player>

灵感来源自一个开源视频播放器:DashPlayer

它的核心功能就是在你看视频时,能够快速的查询单词和句子解释:

  1. hover 到字幕单词时,自动暂停,查询单词的含义
  2. 接入 openai 后可以整句解释

还有一些其他的功能,我个人用不上。喜欢的小伙伴可以去看看。整体还是不错的。

但我在其中遇到了一些问题:

  1. 它只能在 PC 端使用,有时候我喜欢在 ipad 上刷视频。
  2. 它只支持 mp4 格式,其他格式需要自己转换

因此第一阶段,我开发了一个 web 程序,顺便学习 golang:

只有最基本的功能,但对我个人够用:

  1. 播放视频时自动加载同名的 srt 字幕文件;
  2. 当鼠标 hover 到字幕上单词时,自动调用有道词典接口的翻译;
  3. 当鼠标 hover 离开字幕时,继续播放

然后通过 docker 将它部署到 NAS 上。这样我就可以在 ipad 以及 PC 上使用该功能了。

但在使用的过程中感觉,如果是从 youtube 上下载的视频,由于视频体积不大,使用感觉还不错。

但一些高清的影视剧,即使在内网环境,使用 WEB 程序播放视频,还是卡。奈何水平有限难以优化。

因此进行了第二阶段尝试, 尝试用懒猫大大的 EAF 播放 NAS 视频,十分流畅。因此周末 fock 了一波 eaf-video-player 一番魔改,大体实现了我的需求:

  1. 播放视频时自动加载同名的 srt 字幕文件;
  2. 当鼠标 hover 到字幕上单词时,自动调用 Emacs 的翻译;
  3. 当鼠标 hover 离开字幕时,继续播放
  4. 在字幕处单击右键,调用 gptel 解释整句
  5. 跳转到上一个、下一个字幕处

由于这只是一个测试版,代码里一堆 hard code. 但通过这个魔改,展示出 EAF 视频领域的各种可能。唯一的遗憾是,EAF 在 MacOS 上使用并不是完美,我遇到一些问题:

  1. 单机鼠标左键,触发的事件,会导致 eaf 失焦。也不知道是我的问题,还是 MAC 问题,我索性把 try_hide_top_view 直接注释了,不自动隐藏 eaf 的视图。
  2. 把 try_hide_top_view 注释后还会有点问题。运行键盘快捷键之后,需要单击屏幕才能触发 hover 事件。

如果使用 EAF 的小伙伴可以试试: eaf

使用前提:

  1. 和视频文件同一个目录下放置一个 srt 文件,例如 a.mkv 放置一个 a.srt
  2. 如果需要词典和句子解释功能,需要重写 eaf-video-player-lookup eaf-video-player-explain-sentence 给 eaf 发送你自己的翻译结果。
(defun eaf-video-player-lookup (text x y)
  (eaf-call-async "execute_function_with_args" eaf--buffer-id "message_box_update" text x y))

(defun eaf-video-player-explain-sentence (text x y)
  (eaf-call-async "execute_function_with_args" eaf--buffer-id "message_box_update" text x y))
  
6 个赞

楼主mac的python环境有用类似于pyenv之类的版本管理工具控制吗?以及emacs-plus(或别的版本)的编译选项能不能说一下,我使用emacs-plus在mac m1 air上运行eaf相关的总是不尽如意(能跑,但卡的不动hhh)。

我有用 venv,因为我有一堆 python 相关的包。我每一个Python 关联的包,都新开一个 venv (setq eaf-python-command “~/.emacs.d/dependencies/python/eaf/.venv/bin/python3”)

编译选项不记得了。好像是都不太影响。感觉有问题主要就是 python 的情况。

了解了,我后续试试不用pyenv使用venv试试

这个话题怎么没什么人感兴趣。 :rofl: :rofl: :rofl:

根据我看视频的习惯进行了一些调整:

  1. 单击屏幕直接播放或者暂停;
  2. 使用滚轮直接跳转到下一个或上一个字幕的位置;

使用 apple 妙控板,刷剧相当舒适。全触控板操作:

  1. 遇到不会的单词,光标滑动过去,直接暂停播放,弹出单词释义;
  2. 移开光标后,继续播放;
  3. 单句太复杂看不懂,双指双击,直接暂停播放,弹出整句解释;
  4. 对白太快了,没看懂,滑动触控板,跳转到上一句;