美文网首页
MPV播放器系列(二)-完成课堂笔记

MPV播放器系列(二)-完成课堂笔记

作者: 来自知乎的一只小胖子 | 来源:发表于2021-12-25 00:14 被阅读0次

之前我有和大家介绍过YiNote插件和PotPlayer播放器的视频增量功能,这两款应用都能帮助我们更好的应对视频做笔记的需求,但今天的主角不是它们,如果你想先了解下之前的两款应用的使用,你可以时光回溯去看一看,之前的笔记是属于SuperMemo一个系列的,说不定你看完后又会对我们的SuperMemo产生兴趣呢...

简单总结一下就是: 1.PotPlayer能做本地及部分线上课堂的笔记,打开视频地址使用快捷键 H, P即可. 2.使用YiNote浏览器插件小白操作,即可直接上手.再高级点用法场景,则是自己导出最终markdown用jq命令行小工具按不同需求处理下. 啊~,你的 回溯时光机入口在下面这里:

一只小胖子:实践-SuperMemo-本地|在线视频增量(二)3 赞同 · 13 评论文章

好, 那为啥我们要讲解MPV呢, 因为以上两个软件在部分场景上多少还是有点不太另人如意,至少对于我是这样.那能不能自己做一个课堂笔记功能呢? 使用MPV后你真的可以的! 那下面我们基于MPV进行实践吧.

实现的场景为: 当我们在看视频时,按下快捷键Ctrl+B直接复制当前播放时间/播放文件标题/播放文件链接到剪切板,粘贴后按文本或markdown的形式展示出来.具体看下图最终的效果: 拷贝如下图的链接在终端执行,可快速跳转至做笔记的时间处,支持在线及本地视频(注意:线上视频获取文件名可读性不太好,我后期再考虑优化下.)

一. 获取视频信息插件

原文链接如下,把copy-permalink.lua 放置至~/.config/mpv/scripts/copy-permalink.lua 处即可

mpv user script: copy a command that will resume video at current positiongist.github.com/olejorgenb/a5194d9bc183dbe0bfb02aac18fe37f9

下面贴的代码是我自己调整并修改&注释过的,你用我贴上来的就好,lua文件内容如下,请自己保存至~/.config/mpv/scripts/copy-permalink.lua 中,注意最后一行代码的快捷键按你自己的需求修改,确保不要冲突:

-- Author: Ole Jørgen Brønner (olejorgenb@yahoo.no)-- Requirement: xclip for linux, none for macos-- Installation: -- 'mkdir -p ~/.config/mpv/scripts && cp -i copy-permalink.lua ~/.config/mpv/scripts'
 -- %q might not be fully robust-- 返回当前播放视频的文件名和路径:(支持markdown格式,截图功能建议自己用Snipaste更加灵活)function copyPermalink()
    local pos = mp.get_property_number("time-pos")
    local file_name = mp.get_property('filename')
    local uri = mp.get_property("path")
    -- 1.标准|文本)
    -- local bookmark = string.format("mpv --start=%s %q", pos, uri)
    -- 2.markdown
    -- local bookmark = string.format("```bash %s mpv --start=%s %q %s```", "
", pos, uri, "
")
    local bookmark = string.format("### %s 
```bash 
 mpv --start=%s %q 
```
%s", file_name, pos, uri, "---
文本注释: 

截图如下: (请自己用Snipaste截图吧!)
")
    -- 3.调用剪贴板
    -- https://gist.github.com/olejorgenb/a5194d9bc183dbe0bfb02aac18fe37f9#gistcomment-3622348 windows
    -- local pipe = io.popen("xclip -silent -in -selection clipboard", "w")  -- linux
    local pipe = io.popen("pbcopy", "w") -- macos 不用安装pbcopy/pbpaste,可以直接使用
    -- 4.生成当前时间点截图
    mp.commandv("screenshot")
    pipe:write(bookmark)
    pipe:close()
    mp.osd_message("拷贝至剪切板成功")end-- mp.register_script_message("copy-permalink", copyPermalink)-- 设置快捷键mp.add_key_binding("ctrl+b", "copy-permalink", copyPermalink)

这样用如下命令或直接拖动本地视频或在线视频网页链接至mpv播放器. 打开视频Ctrl+B演示:

mpv "https://www.bilibili.com/video/BV17B4y1A7Fv" # 打开B站mpv "~/super_star.mp4" # 打开本地视频

如下: 粘贴内容至Obsidian或Typora中的展示效果:

另外目录中同时生成了一张图片,我们手动复制粘贴至obsidian或其它笔记软件即可.其实更建议你直接使用Snipaste来截图,更方便灵活.

### BV17B4y1A7Fv ```bash 
 mpv --start=54.843 "https://www.bilibili.com/video/BV17B4y1A7Fv" ```---
文本注释: 

截图如下: (自己用Snipaste截图吧!)

最后:

只要在文本注释截图如下字样后写上内容,以及粘贴截图,(直接使用SniPaste操作就好,这样可以很方便的控制截图区大小以及图片预处理),这样我们就做好了一处笔记啦!

具体使用:

当我们在看视频时,按下快捷键Ctrl+B直接复制当前播放时间/播放文件标题/播放文件链接到剪切板,粘贴后按文本或markdown的形式展示出来. 最后可以拷贝笔记链接上的 mpv --start * 在终端执行,即可快速跳转至做笔记的时间处,支持在线及本地视频(注意:线上视频获取文件名可读性不太好,我后期再考虑优化下.)

二. 批量截图功能插件

1.配置截图插件

我在源代码的基本上添加了注释,并做了部分修改,所以你直接拷贝此处下面代码使用即可,放置在文件: ~/.config/mpv/scripts/takeSsSequence.js,请按自己的情况设置下代码行末的快捷键,避免冲突或导致不生效.

/** 
 * 实现相等时长截图,可指定%5开始,98%结束,共截多少张 * 
 * 源码路径如下 * https://github.com/Arieleg/mpv-takeSsSequence/blob/f1d107660b765fdf80b4996c7a94869b4ddce114/takeSsSequence.js * 
 * (我做了部分修改,所以你直接拷贝此处下面代码使用即可): * 
 * ======配置截图相关参数(mpv.conf):======== * 参考: https://mpv.io/manual/master/#screenshot * * --截图模板,指定文件名称,默认为(mpv-shot%n) * --screenshot-template=mpv-shot%f%P * * --指定保存格式(默认为jpg) * --screenshot-format=jpg *  
 * --截图保存目录(默认在脚本运行目录) * --screenshot-directory=~/mpv-www-gen * 
 */function sleep(){
    var actTime = mp.get_time();
    while (mp.get_time() - actTime < 0.05){
    }}function takeSsS() {

    var N = 12; /**截多少张图 */
    var start = 5; /** 开始: %5的播放进度 */
    var end = 95; /** 结束: %95的播放进度 */
    var step = (end - start)/(N); /**步长 */
    var percent = start;
    var P_NUM = 0 /**截图成功数 */
    while (percent < end) {
        mp.commandv("seek", percent, "absolute-percent");
        sleep();
        mp.commandv("screenshot");          
        percent+=step;
        P_NUM = P_NUM + 1
        mp.osd_message("截图" + P_NUM + "成功")
    }   }/**绑定快捷键Ctrl+Alt+d,避免快捷键冲突: * 
 * mpv播放器系统截图功能: Ctrl+s * SnipPaste : Ctrl+Alt+s * copy-permalink.lua: Ctrl+b * ... */mp.add_key_binding("Ctrl+Alt+d", "takeSsSequence", takeSsS);
2.配置图片保存的目录/格式/名称等

这一步也可忽略,不设置的话会使用mpv默认值,比如保存目录默认为当前脚本执行所在的目录,具体参数和用法,请参考官网文档链接:

mpv.iompv.io/manual/master/#screenshot

## 打开~/.config/mpv/mpv.conf ,在文件末尾添加如下的内容:

############
# 我的配置 #
############

# 配置截图相关参数,参考:https://mpv.io/manual/master/#screenshot

# 截图模板,指定文件名称,默认为(mpv-shot%n)
screenshot-template=mpv-shot-%f-%P

# 指定保存格式(默认为jpg)
# screenshot-format=jpg
  
# 截图保存目录(默认在脚本运行目录)
screenshot-directory=~/mpv-www-gen

具体使用:

如上一步的操作一样,在播放视频时,我们按下自己设置的快捷键,我这里是Ctrl+Alt+d, 来执行批量截图:

最终在mpv-www-gen目录中,我们看到了当前视频每隔一段时间处生成的快照图片,这样我们就可以自己复制图片粘贴至笔记软件中做笔记了:

至此,本文结束...


我是一只热爱学习的小胖子,如果你也热爱学习,并且对SuperMemo感兴趣,欢迎转发和评论!

相关文章

网友评论

      本文标题:MPV播放器系列(二)-完成课堂笔记

      本文链接:https://www.haomeiwen.com/subject/sowktrtx.html