為 mpv 播放器設(shè)置代理,以___
為 mpv 播放器設(shè)置代理,以播放某些受地理限制的 URL

聲明:
如果你看不懂這部分的內(nèi)容,那就跳過(guò),不要問(wèn)我這是什么。
本教程基于你已經(jīng)可以做到將 mpv 和 yt-dlp 搭配使用的前提下,若你還不知道如何搭配使用兩者,建議先觀看這篇專(zhuān)欄?[Tip]使用yt-dlp增強(qiáng)mpv player流媒體解析能力&解鎖登陸用戶(hù)分辨率
# 其實(shí)我是寫(xiě)過(guò)較為詳細(xì)的教程(的草稿)的,但。。。(見(jiàn)文末)
Q:為什么要設(shè)置這個(gè)?
A:mpv 和 yt-dlp 并不會(huì)走系統(tǒng)代理。
方法一、[環(huán)境變量] http_proxy
Windows 用戶(hù) 應(yīng)該這么做(記得點(diǎn)確定):
1、去 Windwos 任務(wù)欄中的搜索框里搜索“環(huán)境變量”,打開(kāi)“編輯系統(tǒng)環(huán)境變量”或“編輯賬戶(hù)的環(huán)境變量”

2、然后根據(jù)下圖操作,并自行更改“變量值”為你的代理服務(wù)器地址,我不過(guò)是將官方文檔中的示例換了一種寫(xiě)法而已

# Linux 用戶(hù)會(huì)不會(huì)感到很熟悉?
3、大功告成。
你不需要在配置文件中寫(xiě)代理相關(guān)的配置,mpv 和 yt-dlp 都會(huì)讀取該環(huán)境變量的值
注意!
不少跨平臺(tái)應(yīng)用和Linux應(yīng)用也會(huì)讀取該環(huán)境變量的值!
例如 VSCode

若只想在 mpv 中使用代理,請(qǐng)使用下面提到的?--http-proxy + (yt-dlp) --proxy
方法二、[配置文件] (mpv) --http-proxy + (yt-dlp) --proxy
在 mpv.conf 寫(xiě)入這些,并根據(jù)注釋自行更改。
注意!如果設(shè)置了?--http-proxy
?,環(huán)境變量?http_proxy
?將被忽略。
方法二點(diǎn)五、[配置文件] 僅設(shè)置 yt-dlp 的代理
在?script-opts/ytdl_hook.conf?中寫(xiě)入這些:
然后在?mpv.conf?寫(xiě)入這些,并根據(jù)注釋自行更改
為什么不需要設(shè)置上文所說(shuō)的?--http-proxy
??
官方手冊(cè)(https://mpv.io/manual/master/#options-ytdl-raw-options)原話(huà):
A proxy URL can be passed for youtube-dl to use it in parsing the website. This is useful for geo-restricted URLs. After youtube-dl parsing, some URLs also require a proxy for playback, so this can pass that proxy information to mpv.
機(jī)翻:
可以為 youtube-dl 傳遞代理 URL,以便在解析網(wǎng)站時(shí)使用它。 這對(duì)于受地理限制的 URL 很有用。youtube-dl 解析后,有些 URL 還需要代理才能播放,所以這可以把代理信息傳遞給 mpv。
因此可知,如果是通過(guò) yt-dlp 解析的鏈接,只需要通過(guò)?--ytdl-raw-options-append=proxy=http://localhost:3128
?設(shè)置代理地址即可,這會(huì)把代理地址傳遞給 mpv。
但是 mpv 默認(rèn)是自己播放失敗后才讓 yt-dlp 解析的,怎么辦?
還記得上文?script-opts/ytdl_hook.conf
?部分的一個(gè)選項(xiàng)嗎?
try_ytdl_first=yes
# 讓所有鏈接都首先過(guò) yt-dlp 解析即可
提一下可能的其他一種方案
或許,你可以在 yt-dlp.conf 而非 mpv.conf 中寫(xiě)入?--proxy http://localhost:3128
?來(lái)為 yt-dlp 使用代理(并且可以使用更好用的 socks5 代理),
并在 mpv.conf 中寫(xiě)入?http-proxy=http://localhost:3128
?為 mpv 設(shè)置 http(s) 代理。
不過(guò),這種方法并沒(méi)有什么讓我覺(jué)得不得不用的理由,所以并未測(cè)試。。。
碎碎念
官方手冊(cè)說(shuō) https 的 URL 會(huì)繞過(guò)?ytdl-raw-options-append=proxy=http://localhost:3128
?和?--http-proxy=http://localhost:3128
?設(shè)置的代理。
https://mpv.io/manual/master/#options-ytdl-raw-options
Take note that SOCKS proxies aren't supported and https URLs also bypass the proxy.
https://mpv.io/manual/master/#options-http-proxy
Proxies are not used for https URLs.
機(jī)翻:
請(qǐng)注意,不支持 SOCKS 代理,并且 https URL 也會(huì)繞過(guò)代理。
代理不用于 https URL。
但我在配置文件中設(shè)置了代理,播放 https URL 時(shí),可以清楚地在代理軟件的日志看到 mpv 把 https URL 丟給了代理。
我不知道這是為什么。ㄟ( ▔, ▔ )ㄏ
最后
若要自定義規(guī)則,建議在代理軟件里自定義,而不是使用 mpv.conf
# 雖然,auto profile 不是不能用。。。
And,
我承認(rèn)閣下的 http-proxy 很強(qiáng),但倘若我開(kāi)啟 TUN/TAP,閣下又當(dāng)如何應(yīng)對(duì)呢?

這部分內(nèi)容與前文無(wú)關(guān),或許吧。。。
碎碎念
其實(shí),我是寫(xiě)了一個(gè)勉強(qiáng)稱(chēng)得上是完善的 mpv 播放器關(guān)于在線(xiàn)視頻相關(guān)的教程(?)的。
# 這篇文章其實(shí)本來(lái)也和前面的部分有不少關(guān)聯(lián)的。
內(nèi)容包括:
緩存部分、
內(nèi)置 ytdl_hook 腳本部分(即 yt-dlp 部分)、
代理部分(也就是本文)、
(可選)quality-menu 腳本部分(項(xiàng)目地址:https://github.com/christoph-heinrich/mpv-quality-menu;我對(duì)配置文件的部分注釋做了一個(gè)非常簡(jiǎn)陋的雙語(yǔ))
但是,我最近精神狀態(tài)不是很正常,精力不足,無(wú)法將以上部分全部整理發(fā)出
所以,還請(qǐng)拜托看到這篇文章的大佬,若有興趣的話(huà),接手我的草稿整理發(fā)出,我自愿放棄這篇教程所有內(nèi)容的所有權(quán)(本文除外,不過(guò)也不是不可以商量)。
# 不過(guò)有些抱歉的是,我的草稿有一點(diǎn)亂。。。
若有興趣,可以私信我討論相關(guān)事宜。
