使用 webtorrent.js 脚本让 mpv 实现边下边播
使用 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
- PowerShell:Mode(表示文件属性) 一栏应为 -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 的 最末尾,保存,即可。