欢迎光临散文网 会员登陆 & 注册

使用 webtorrent.js 脚本让 mpv 实现边下边播

2023-06-15 20:18 作者:昵称非我所欲也  | 我要投稿

使用 webtorrent-mpv-hook 脚本让 mpv 播放器实现 torrent 边下边播 


目录 

  • 观前提醒 

  • 开始前需要准备的 

  • 安装 

    - 我写一下 Windows 的安装方法吧 

  • 使用 

  • 设置 

    - input.conf 

    - script-opts/webtorrent.conf 

    - 个人补充 



观前提醒

  • 你可能不需要这个 js 脚本,大部分 torrent 客户端都支持预览文件

    参见 FinnR 大佬的教程:【开源技巧】qbittorrent边下边播

    # 另外,我补充一点,建议在 mpv.conf 中设置 cache=auto 或 cache=no,防止 mpv 缓存损坏的音视频数据

  • 这个脚本的做种方面不是很理想,为了BT环境着想,个人不是很建议当成主力使用

    - 不如说是很不理想,各位若有兴趣可以自行测试

  • 这个 js 脚本相对比较折腾(常见的lua脚本基本都是直接扔进去就能用,最多需要写一两行配置,这个还需要命令行创建硬链接),容易劝退

    (但是,如果你已经折腾好了适合自己的mpv播放器,这个脚本对你来说应该也不是很难)



开始前需要准备的

  • mpv 播放器 - https://mpv.io

    建议先自行配置,将其调教得适合自己后再看本文

    你可以参考一下 FinnR 大佬的专栏文集,我觉得很适合新手入门

  • note.js - https://nodejs.org/zh-cn

    对于非开发者来说,建议选择 长期维护版(LTS)

  • (可选)Notepad3

    https://www.rizonesoft.com/zh/下载/记事本3/

    - https://github.com/rizonesoft/Notepad3/releases

    用于替代默认的功能孱弱的文本编辑器(说的就是你,记事本!)

# 是的,你不需要手动去 webtorrent-mpv-hook 项目地址下载文件
webtorrent-mpv-hook 项目地址 https://github.com/mrxdst/webtorrent-mpv-hook



安装

参见 https://github.com/mrxdst/webtorrent-mpv-hook#install

我写一下 Windows 的安装方法吧

Linux 用户 可以参考一下,只是路径和使用的终端不同

0、你需要额外准备的

  • 管理员权限

  • PowerShell(系统自带;一个有用的快捷键『Windows+x』)

    cnmd  cmd 也可以,但我不建议

    - (可选)建议各位使用 Windows Terminal(https://aka.ms/terminal),PowerShell 和 cmd 都太丑了

1、开始安装

安装 Node.js:去上文给的链接里下载 Node.js 安装包,然后一般一路下一步即可

安装 webtorrent-mpv-hook:安装完成 Node.js 后,打开 PowerShell(cmd 应该也行,但我懒得自己再测试了),输入并运行

安装完成


2、将安装的 js 脚本链接到 mpv 的 scripts 文件夹

资源管理器输入 %APPDATA%\npm\node_modules\webtorrent-mpv-hook,然后再打开 build 文件夹

在 build 文件夹中找到 webtorrent.js,『Shift+右键』 单击,然后 复制为路径

以管理员身份运行 PowerShell,输入并运行

其中, <path> 应为 <你的mpv设置文件夹>\scripts\webtorrent.js; <target> 应为 <上一步复制到的"webtorrent.js"的路径>

示例

如果你使用的是便携路径的话,<path> 应该和下面的类似:

(不建议)如果使用 cmd,应该使用 mklink /H,请各位自行查找相关文档运行(或者如果运行时语法错误,cmd 一般会告诉你语法的)
注意,cmd无法创建跨盘符硬链接,此时请用 PowerShell


3、测试是否成功设置(或许可选?)

Powershell / cmd 运行

- PowerShell 的话,Get-ChildItem 和 ls 也行,这些都是 Get-ChildItem 的别名
然后观察输出结果,找到 webtorrent.js
- PowerShellMode(表示文件属性) 一栏应为 -a---l

- cmd:第三栏应为 <SYMLINK>

- 其实 资源管理器 右键 -> 属性 也可以
# 但我觉得,你既然都命令行创建了硬链接了,再多打两三个字符也不难吧。。。
文件类型应为 .symlink(.js) ,后面的 (.js) 表示链接到的文件的类型



使用

参见 https://github.com/mrxdst/webtorrent-mpv-hook#usage

这部分应该无需讲解吧?简单一点,直接拖 .torrent 文件就行
另外两种方法是哈希值和磁力链接,和在线视频一样,一般命令行运行/拖链接即可
命令行运行记得加半角引号(" "或' ')

打开一个种子文件后,会显示信息/下载进度的OSD,视频开始播放时会消失
你可以按 p 键切换 OSD 是否可见(参见:设置 -> input.conf)

注意!这不是默认的样式,默认的字体应该不同
我是自己在 mpv.conf 里将 osd 字体改成了 Noto Sans CJK SC,这影响了脚本的OSD字体



设置

参见 https://github.com/mrxdst/webtorrent-mpv-hook#configuration

我写了一些中文注释,不过,大部分都是机翻

# 注意 .conf 文件的编码应为 UTF-8,换行应为 LF(Unix)

input.conf

这是默认情况下的快捷键
一般情况下其实是不需要在 input.conf 里再写这么一行的

script-opts/webtorrent.conf

在 <mpv设置文件夹>/script-opts/ 中新建一个 webtorrent.conf,粘贴 以下内容并自行根据需要更改
# 仍旧需要注意编码和换行(UTF-8 + LF)

关于 stats.conf,请参阅:

- 官方手册:https://mpv.io/manual/master/#stats

推荐阅读(两者排名不分先后):

- Github @hooke007 的汉化:https://hooke007.github.io/official_man/mpv.html#id84

- Bilibili @28283844972_bili 的汉化:https://www.bilibili.com/read/cv18915371


我自己试着修改了一下,分享一下:

高斯模糊在 mpv.conf 里设置

Noto Sans 请到这里下载:https://github.com/notofonts/noto-cjk/releases

# 紫色边框是为了贴近 mpv logo 的主题,高斯模糊是因为我没找到文字背景在哪里设置 :(

个人补充

这部分主要是为了避坑

1、mpv.conf 部分

这部分主要是为了避坑,以及备忘


若设置了 http-proxy,建议禁用。
该 js 脚本其实是运行一个本地服务器,让 mpv 播放

的直链
而 mpv 会让 http 链接都经过 proxy,包括 localhost,故建议禁用
# 不过某些情况其实也不需要禁用(


若设置了 --script-opts=ytdl_hook-try_ytdl_first=yes,建议禁用
根据上面所说的原因,其实是不需要让 youtube-dl/yt-dlp 解析的,故建议禁用。
# 若启用,会多一层报错信息(你可以调出控制台自己查看),但是可以正常播放

当然,你也可以额外写一行:

参见:https://mpv.io/manual/master/#options-exclude

方法不止一个,其他思路 - 例如下文提到的 auto profile 也可以实现相似的效果。
各位若有兴趣可以自行尝试。


2、一个 auto profile

# 之前说过

该 js 脚本其实是运行一个本地服务器,让 mpv 播放 http://localhost:<端口号>/webtorrent/<文件名> 的直链

但是 cache=auto 时,mpv会对网络链接启用缓存( cache=yes 时,会对所有视频启用缓存),同样会对 http://localhost:<端口号>/webtorrent/<文件名> 启用缓存
但此时的文件其实是存在本地硬盘里的,缓存没多大意义,还可能导致缓存损坏的音视频数据,建议禁用(cache=no)。
# 我在前文【开源技巧】qbittorrent边下边播 附近也提到了建议将cache设置为auto/no,原因类似。

但是,此时若想看在线视频,还得去 mpv.conf 里改 cache=yes/auto,非常麻烦。
有没有一种方法能根据是否为torrent边下边播自动禁用缓存呢?
于是就有了下面的 auto profile。

这个 profile 用于:当文件路径中包含 "webtorrent" 时,自动禁用缓存。

将这段代码粘贴到 mpv.conf 的 最末尾,保存,即可。


使用 webtorrent.js 脚本让 mpv 实现边下边播的评论 (共 条)

分享到微博请遵守国家法律