分享时间 | 2024-06-01 01:48 |
最后更新 | 2024-06-01 01:48 |
修订版本 | 0 |
用户许可 | 可自己使用或修改,不可再分享 |
Quicker版本 | 1.42.43 |
动作大小 | 8.1 KB |
《一种自动判断视频是在本地播放器还是网页浏览器播放 并 根据用户指令自适应调整对应平台的播放进度/播放速度的方案》
《一套对本地播放器和网页浏览器视频播放的通用控制方案》
看视频学习时,我们可能正在其他的程序里记笔记/看教材(或者摸鱼),如果没听清想回退几秒,或者某一段讲的慢/快需要调整播放速度,这是一件很麻烦的事情;更进一步,视频可能是本地播放器播放,也可能是在网页浏览器里在线播放,这更增加了情况的复杂性
所以我们希望的是:用户通过自己觉得方便的方式发送“前进5秒”/“后退5秒”/“调整播放速度”等指令,动作自行判断当前正在播放视频的是本地播放器还是网页浏览器,而后发送对应的指令执行相应的操作;即,用户用一套指令同时具有对本地播放器和网页浏览器的视频控制功能
本动作对此提供了一套完整的解决方案
注:
本动作在我个人的使用场景下最终的效果是(你也可以改成其他你想要的方式):
有点长,请耐心阅读(如果你采用和我相同的方式进行触发,5分钟即可完成配置,不难)
提问:为什么不直接说怎么用就好了,我不想看原理解释
回答:因为每个人的使用习惯不同,如果你不使用和我相同的快捷键来触发这些功能,就需要手动修改动作里的快捷键配置,就算你使用和我相同的方案,也需要进行相应的配置,所以无论如何都得看这些说明
要实现上述功能,需要解决以下几个问题:
chrome类浏览器中,可以使用扩展Global Speed: 视频速度控制(网址为chrome商店地址,Edge浏览器可自行搜索商店)对网页播放器进行快捷键控制
原理为:
在quicker动作里一共配置了3个功能:
到此,网页播放器的准备完成。
注意:如果你没用过这个扩展,可能需要先熟悉这个扩展的功能并手动测试这些功能,确保你自己会用这个扩展,再使用本动作进行锦上添花,否则可能不知道问题出在什么地方,后文我对该扩展的使用进行了一些说明。
说明(防止有人不会用):
potplayer或者其他本地播放器中都可以轻松的配置全局快捷键,来实现在播放器外部时对播放器的控制,本动作的工作场景只支持potplayer,在这里无需进行任何配置
(这里只进行原理介绍,用户无需进行任何配置,可忽略该节)
这才是最难的地方,只有找到方法判断本地播放器或者网页播放器是否正在播放,我们才能让动作自动判断该操作哪一边,否则就需要每次操作时手动指定要操作哪个播放器
但是要判断是否存在网页播放器在播放是很难的事情,上述的浏览器扩展并没有提供对应的接口,因此只能从本地浏览器下手
(由于potplayer找不到任何官方的文档,最开始我是打算放弃改用VLC的,VLC测试之后可以通过解析某个VLC提供的网页html里的内容来读取VLC是否正在播放,后来又找到了potplayer的解决方案,就放弃了VLC)
经过搜索,在GitHub的一个项目中找到了通过SendMessage方法向potplayer发送信息进行控制和获取状态的方法,于是现在我们可以判断本地的potplayer是否正在播放并进行操作了,且不必配置全局快捷键
原理解释完了,看怎么用吧
动作一共接受3个参数:left, right, mid(左,右,中),分别控制进度后退/前进和切换播放速度,你可以用你喜欢的方式触发它们进行控制
(因为控制浏览器的进度采用了快捷键,因此不建议使用纯键盘触发,可能会因为按下的键位不一致导致无法触发,需要用户自行测试)
推荐使用高级鼠标触发,通过侧键或者键盘进行配合操作,我个人的用法是:将鼠标侧键设置为shift,而后通过shift+鼠标滚轮滚动进行进度控制,通过shift+鼠标中键进行播放进度切换;你也可以直接使用X1等侧键按键进行配置
如果你在浏览器中使用了和我相同的快捷键(“Ctrl Shift A”,“Ctrl Shift D”,“Alt Shift Z”),则无需进行任何配置,直接在quicker中进行配置即可
简单情况:
如果需要修改,则此处逻辑有点复杂,先看简单情况:
配置完成
复杂情况:
如果你像我一样,使用了Ctrl Shift Alt中的某一个作为鼠标触发的方式,例如我用的shift+鼠标滚轮/中键,现在假设你用的是Ctrl+鼠标滚轮/中键进行触发,你需要这样做:
之所以如此复杂,是因为存在这样一个问题:鼠标触发的时候如果使用了Ctrl,那么发送快捷键控制浏览器的时候你的Ctrl仍然是处于按下状态的(此时你还没松开),(下图中的步骤)发送快捷键控制浏览器时,就不能发送Ctrl键;因为如果你按着Ctrl又发送Ctrl,最终等于没有发送Ctrl给浏览器;例如你在图里的步骤发送Ctrl Shift A,因为你触发动作时按住了Ctrl,所以这里Ctrl被抵消,实际发送的是Shft A,最终无法触发;因为Ctrl已经被你按下了,所以你真正应该发送的是Shift A,配合你已经按下的Ctrl,才能正确触发,有点绕……
总之,你触发本动作时,使用的特殊按键就是这里的辅助键,将辅助键的信息填入对应的变量中,并从“浏览器进度”的代码里去掉辅助键的代码即可
问:多个potplayer的情况下可能判断失误播放器
答:我懒,动作默认只查找一个potplayer并判断找到的那个的状态,如果找到的那个没有在播放,就控制网页去了,理论上是可以判断所有打开的potplayer的状态的,如果有多人提出这个需求的话我应该会加上
问:为什么没有播放/暂停功能?
答:暂停的时候仍然可以遵循“如果potplayer在播放就暂停它,否则暂停网页浏览器”的逻辑,但是继续播放的时候呢?如何判断应该继续播放potplayer还是网页浏览器?因此播放/暂停功能我个人是在鼠标上配置了两个不同的快捷键来实现:
修订版本 | 更新时间 | 更新说明 |
---|---|---|
0 | 2024-06-01 01:48 |