使用 webtorrent.js 腳本讓 mpv 實現(xiàn)邊下邊播
使用 webtorrent-mpv-hook 腳本讓 mpv 播放器實現(xiàn) torrent 邊下邊播?
目錄?
觀前提醒?
開始前需要準備的?
安裝?
- 我寫一下 Windows 的安裝方法吧?
使用?
設置?
- input.conf?
- script-opts/webtorrent.conf?
- 個人補充?
觀前提醒
你可能不需要這個 js 腳本,大部分 torrent 客戶端都支持預覽文件
參見 FinnR 大佬的教程:【開源技巧】qbittorrent邊下邊播
# 另外,我補充一點,建議在 mpv.conf 中設置?
cache=auto
?或?cache=no
,防止 mpv 緩存損壞的音視頻數(shù)據(jù)這個腳本的做種方面不是很理想,為了BT環(huán)境著想,個人不是很建議當成主力使用
- 不如說是很不理想,各位若有興趣可以自行測試
這個 js 腳本相對比較折騰(常見的lua腳本基本都是直接扔進去就能用,最多需要寫一兩行配置,這個還需要命令行創(chuàng)建硬鏈接),容易勸退
(但是,如果你已經(jīng)折騰好了適合自己的mpv播放器,這個腳本對你來說應該也不是很難)
開始前需要準備的
mpv 播放器 -?https://mpv.io
建議先自行配置,將其調教得適合自己后再看本文
你可以參考一下?FinnR 大佬的專欄文集,我覺得很適合新手入門
note.js -?https://nodejs.org/zh-cn
對于非開發(fā)者來說,建議選擇 長期維護版(LTS)
(可選)Notepad3
-?https://www.rizonesoft.com/zh/下載/記事本3/
- https://github.com/rizonesoft/Notepad3/releases
用于替代默認的功能孱弱的文本編輯器(說的就是你,記事本?。?/p>
# 是的,你不需要手動去 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(系統(tǒng)自帶;一個有用的快捷鍵『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無法創(chuàng)建跨盤符硬鏈接,此時請用 PowerShell
3、測試是否成功設置(或許可選?)
Powershell / cmd 運行
- PowerShell 的話,Get-ChildItem
?和?ls
?也行,這些都是?Get-ChildItem
?的別名
然后觀察輸出結果,找到?webtorrent.js
- PowerShell:Mode(表示文件屬性) 一欄應為?-a---l

- cmd:第三欄應為?<SYMLINK>

- 其實 資源管理器 右鍵 -> 屬性 也可以
# 但我覺得,你既然都命令行創(chuàng)建了硬鏈接了,再多打兩三個字符也不難吧。。。
文件類型應為?.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
,粘貼 以下內容并自行根據(jù)需要更改
# 仍舊需要注意編碼和換行(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 鏈接都經(jīng)過 proxy,包括 localhost,故建議禁用
# 不過某些情況其實也不需要禁用(
若設置了?--script-opts=ytdl_hook-try_ytdl_first=yes
,建議禁用
根據(jù)上面所說的原因,其實是不需要讓 youtube-dl/yt-dlp 解析的,故建議禁用。
# 若啟用,會多一層報錯信息(你可以調出控制臺自己查看),但是可以正常播放
當然,你也可以額外寫一行:
參見:https://mpv.io/manual/master/#options-exclude
方法不止一個,其他思路 - 例如下文提到的 auto profile 也可以實現(xiàn)相似的效果。
各位若有興趣可以自行嘗試。
2、一個 auto profile
# 之前說過
該 js 腳本其實是運行一個本地服務器,讓 mpv 播放?http://localhost:<端口號>/webtorrent/<文件名> 的直鏈
但是?cache=auto
?時,mpv會對網(wǎng)絡鏈接啟用緩存( cache=yes
?時,會對所有視頻啟用緩存),同樣會對?http://localhost:<端口號>/webtorrent/<文件名>
?啟用緩存
但此時的文件其實是存在本地硬盤里的,緩存沒多大意義,還可能導致緩存損壞的音視頻數(shù)據(jù),建議禁用(cache=no
)。
# 我在前文【開源技巧】qbittorrent邊下邊播?附近也提到了建議將cache設置為auto/no,原因類似。
但是,此時若想看在線視頻,還得去 mpv.conf 里改 cache=yes/auto,非常麻煩。
有沒有一種方法能根據(jù)是否為torrent邊下邊播自動禁用緩存呢?
于是就有了下面的 auto profile。
這個 profile 用于:當文件路徑中包含 "webtorrent" 時,自動禁用緩存。
將這段代碼粘貼到 mpv.conf 的?最末尾,保存,即可。