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

为 mpv 播放器设置代理,以___

2023-07-29 12:10 作者:昵称非我所欲也  | 我要投稿

为 mpv 播放器设置代理,以播放某些受地理限制的 URL



声明:


如果你看不懂这部分的内容,那就跳过,不要问我这是什么。


本教程基于你已经可以做到将 mpv 和 yt-dlp 搭配使用的前提下,若你还不知道如何搭配使用两者,建议先观看这篇专栏 [Tip]使用yt-dlp增强mpv player流媒体解析能力&解锁登陆用户分辨率

# 其实我是写过较为详细的教程(的草稿)的,但。。。(见文末)


Q:为什么要设置这个?

A:mpv 和 yt-dlp 并不会走系统代理。




方法一、[环境变量] http_proxy

Windows 用户 应该这么做(记得点确定):

1、去 Windwos 任务栏中的搜索框里搜索“环境变量”,打开“编辑系统环境变量”或“编辑账户的环境变量

不要去 控制面板/设置 里大海捞针,鬼知道微软把它放在哪个不起眼的地方了,找到它所花的时间都够你设置完了。

2、然后根据下图操作,并自行更改“变量值”为你的代理服务器地址,我不过是将官方文档中的示例换了一种写法而已

记得将 http://localhost:3128 改为你自己的代理服务器地址


# Linux 用户会不会感到很熟悉?

3、大功告成。

不需要在配置文件中写代理相关的配置,mpv 和 yt-dlp 都读取该环境变量的值


注意!
不少跨平台应用和Linux应用也会读取该环境变量的值!
例如 VSCode


若只想在 mpv 中使用代理,请使用下面提到的 --http-proxy + (yt-dlp) --proxy



方法二、[配置文件] (mpv) --http-proxy + (yt-dlp) --proxy

mpv.conf 写入这些,并根据注释自行更改。

注意!如果设置了 --http-proxy ,环境变量 http_proxy 将被忽略。


方法二点五、[配置文件] 仅设置 yt-dlp 的代理

在 script-opts/ytdl_hook.conf 中写入这些:

然后在 mpv.conf 写入这些,并根据注释自行更改

为什么不需要设置上文所说的 --http-proxy ?

官方手册(https://mpv.io/manual/master/#options-ytdl-raw-options)原话:

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.

机翻:

可以为 youtube-dl 传递代理 URL,以便在解析网站时使用它。 这对于受地理限制的 URL 很有用。youtube-dl 解析后,有些 URL 还需要代理才能播放,所以这可以把代理信息传递给 mpv。

因此可知,如果是通过 yt-dlp 解析的链接,只需要通过 --ytdl-raw-options-append=proxy=http://localhost:3128 设置代理地址即可,这会把代理地址传递给 mpv。

但是 mpv 默认是自己播放失败后才让 yt-dlp 解析的,怎么办?
还记得上文 script-opts/ytdl_hook.conf 部分的一个选项吗?

try_ytdl_first=yes

# 让所有链接都首先过 yt-dlp 解析即可


提一下可能的其他一种方案

或许,你可以在 yt-dlp.conf 而非 mpv.conf 中写入 --proxy http://localhost:3128 来为 yt-dlp 使用代理(并且可以使用更好用的 socks5 代理),
并在 mpv.conf 中写入 http-proxy=http://localhost:3128 为 mpv 设置 http(s) 代理。

不过,这种方法并没有什么让我觉得不得不用的理由,所以并未测试。。。


碎碎念

官方手册说 https 的 URL 会绕过 ytdl-raw-options-append=proxy=http://localhost:3128 和 --http-proxy=http://localhost:3128 设置的代理。

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.

机翻:

请注意,不支持 SOCKS 代理,并且 https URL 也会绕过代理。

代理不用于 https URL。

但我在配置文件中设置了代理,播放 https URL 时,可以清楚地在代理软件的日志看到 mpv 把 https URL 丢给了代理。
我不知道这是为什么。ㄟ( ▔, ▔ )ㄏ


最后

若要自定义规则,建议在代理软件里自定义,而不是使用 mpv.conf
# 虽然,auto profile 不是不能用。。。


And,

我承认阁下的 http-proxy 很强,但倘若我开启 TUN/TAP,阁下又当如何应对呢?




这部分内容与前文无关,或许吧。。。

碎碎念

其实,我是写了一个勉强称得上是完善的 mpv 播放器关于在线视频相关的教程(?)的。

# 这篇文章其实本来也和前面的部分有不少关联的。

内容包括:

缓存部分、

内置 ytdl_hook 脚本部分(即 yt-dlp 部分)、

代理部分(也就是本文)、

(可选)quality-menu 脚本部分(项目地址:https://github.com/christoph-heinrich/mpv-quality-menu;我对配置文件的部分注释做了一个非常简陋的双语)


但是,我最近精神状态不是很正常,精力不足,无法将以上部分全部整理发出

所以,还请拜托看到这篇文章的大佬,若有兴趣的话,接手我的草稿整理发出,我自愿放弃这篇教程所有内容的所有权(本文除外,不过也不是不可以商量)。

# 不过有些抱歉的是,我的草稿有一点乱。。。

若有兴趣,可以私信我讨论相关事宜。



归终。。。


为 mpv 播放器设置代理,以___的评论 (共 条)

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