玩 mpv 的人大概都有一份越改越长的 mpv.conf。这里把我自用的那份贴出来,一是给同样在折腾播放器的朋友一个能直接用的起点,二是顺带在网上留个备份。
配置只针对 Windows,写法以 mpv v0.41(mpv --list-options)校对过。整理的原则是与默认值相同的一律不写,所以文件很短,剩下的每一项都是真的改过行为的。
放在哪
mpv.conf 要和 mpv 主程序配套放,两种装法的位置不一样:
| 装法 | 配置目录 |
|---|
| 安装版 | %APPDATA%\mpv\ |
| 便携版 | 主程序旁边的 portable_config\ |
input.conf(快捷键)、scripts\(脚本)、script-opts\(脚本配置)都放在同一个目录下。
配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| # ==============================================================================
# 我的 mpv 配置
# 平台:Windows / mpv(以 v0.41 校对)
# 位置:便携版放 portable_config/mpv.conf;安装版放 %APPDATA%\mpv\mpv.conf
# 原则:与默认值相同的项一律不写,所以文件很短;标「可选」的按需取消注释
# ==============================================================================
# ------------------------------- 视频输出 --------------------------------------
vo=gpu-next # 新一代渲染后端(画质与色彩管理更好)
gpu-api=d3d11 # Windows 下用 D3D11
hwdec=d3d11va # 硬件解码
# ------------------------------- 色彩与 HDR ------------------------------------
target-colorspace-hint=yes # 把色彩空间元数据交给系统,HDR 直通(默认 auto)
dither-depth=10 # 抖动位深需与显示器一致,8bit 屏请改 auto 或 8
# ------------------------------- 缩放与插值 ------------------------------------
scale=ewa_lanczossharp # 放大算法
cscale=ewa_lanczos # 色度放大算法
interpolation=yes # 补帧到显示器刷新率
video-sync=display-resample # 以音频为基准微调画面节奏(配合上面的补帧)
# video-sync=audio # 备选:回到音频为主(默认值),个别片源/设备反而更稳时用
# ------------------------------- 字幕与音轨 ------------------------------------
slang=chs,cht,chi,eng # 字幕语言优先级
sub=auto # 自动选择字幕轨
sub-auto=fuzzy # 自动加载近似名的外置字幕
stretch-image-subs-to-screen=yes # 图形字幕拉伸到画面宽度
audio-file-auto=fuzzy # 自动加载近似名的外置音轨
# ------------------------------- 窗口与 OSD ------------------------------------
ontop=yes # 总是置顶
title="${filename} - mpv" # 窗口标题
osd-bar=no # 关掉内建进度条(uosc 自绘)
input-default-bindings=no # 屏蔽内建快捷键,改用自备的 input.conf
# border=no # 可选:无边框,窗控由 uosc 自绘
# window-maximized=yes # 可选:启动即最大化
# ------------------------------- 播放行为 --------------------------------------
keep-open=yes # 播完停在最后一帧,不自动退出
# save-position-on-quit=yes # 可选:退出时记住进度,下次续播
# watch-later-options=start,vid,aid,sid # 可选:只记进度与所选轨道(配合上一行)
# ------------------------------- 截图 ------------------------------------------
screenshot-directory="~~desktop/" # 截图存到桌面
# ==============================================================================
# 可选方案:按需取消注释
# ==============================================================================
# --- 换用 Vulkan 后端(部分显卡 HDR/性能更好,兼容性略差)---
# gpu-api=vulkan
# hwdec=vulkan
# vulkan-async-transfer=yes
# inverse-tone-mapping=yes
# --- 蓝光原盘无法进入菜单时,回退到 D3D11 上下文 ---
# 本配置主流程已是 d3d11,这段只在上面改用 Vulkan 后才有意义
# [Bluray]
# profile-cond=get("filename", ""):match("MovieObject") ~= nil or get("filename", ""):match("index") ~= nil
# gpu-context=d3d11
# hwdec=yes
|
上面这份就是仓库里的同名文件——正文这里不是手抄的,是把那份文件直接渲染出来的,所以两边永远不会写歪。想整份拿走可以用:mpv.conf。
几个数值说明一下
配置里都写了短注释,只有下面几项容易照抄踩坑,单独说一下。
色彩与 HDR
target-colorspace-hint=yes 会把色彩空间元数据交给系统,是 HDR 直通的关键。注意它的默认值是 auto——只在显示器报告 HDR 能力时才启用;显式写 yes 是强制开启。显示器不支持 HDR 的话,用默认的 auto 更稳妥。
dither-depth 要和显示器位深一致。10bit 面板写 10 是对的,但 8bit 屏也照抄 10 就会按错误位深抖动,那种情况建议改回 auto 让 mpv 自己探测。
补帧(interpolation)
interpolation=yes 配 video-sync=display-resample,是把画面补到显示器刷新率:24fps 的片源在 60Hz 屏上本来会有 3:2 pulldown 的规律性抖动,开这个能抹平。
但补帧最适合「刷新率是片源帧率的整数倍」——24fps 配 120Hz 是完美的 5 倍,配 60Hz 就只能靠 display-resample 尽量匀一匀。如果你的屏幕刷新率跟片源对不上,这项带来的可能不是流畅而是另一种抖动,可以先关掉对比一下。
配置文件里我把 video-sync=audio 留成了注释行,就是给这种情况准备的:改回它之后音频做主时钟、画面丢帧对齐,最稳当(它本来就是默认值),代价是少了补帧那点顺滑。哪边更好因片源和设备而异,建议自己 A/B 一下。
快捷键与界面
input-default-bindings=no 关掉了 mpv 所有内建快捷键,osd-bar=no 关掉了内建进度条——这两个都是配合 uosc 这类第三方界面的写法,进度条由 uosc 自己画,不然会重影。
⚠️ 代价是:屏蔽内建快捷键之后,必须自己提供 input.conf,否则键盘鼠标会完全没反应——连 q 退出、空格暂停都不剩。
我那份 mpv.conf 是配套自己的 input.conf 用的(方向键快进、滚轮调音量、, 和 . 调音频延迟、Ctrl+s 截图到桌面)。这次只放了 mpv.conf,所以你要是也照抄了 input-default-bindings=no,至少先把这个最小配置存成 input.conf 放到同一目录:
1
2
3
4
5
6
7
| SPACE cycle pause
LEFT seek -5
RIGHT seek 5
UP add volume 5
DOWN add volume -5
f cycle fullscreen
q quit
|
被我省略的项
对照别人的配置会发现少了不少眼熟的条目,它们都是当前 mpv 的默认值,写不写一个样:
1
2
3
4
5
| dither=fruit
tscale=oversample
d3d11-flip=yes
d3d11-exclusive-fs=no
vulkan-async-compute=yes
|
剩下的删的是真没用的:log-file(调试用)、profile=gpu-hq(那套预设会和这里显式写的缩放算法打架)、osc=no(那是给 modern.lua 的,我用 uosc 不需要),以及 no-osd-bar、no-border 这种命令行写法——在配置文件里得写成 osd-bar=no、border=no。
还有一段原来记下来的 [Idle] 待机配色示例也删了,因为里面有一处典型的坑:background=1 并不是合法值,background 只能取 none / color / tiles,写错 mpv 会直接起不来。顺带一提,这个文件里所有颜色值都必须加引号(background-color="#000000"),否则 # 会被当成行内注释,参数就空了。
几个可选方案
配置文件末尾留了两段注释掉的方案,按需取消注释:
- Vulkan 后端:部分显卡上 HDR 和性能会更好,但驱动兼容性不如 D3D11,遇到花屏/闪退可以两边对比。
- 蓝光原盘回退:BDMV 进不去菜单时,用
profile-cond 匹配到 MovieObject 就切回 D3D11 上下文。注意当前主流程已经跑在 D3D11 上,这段只在上面改用 Vulkan 之后才有意义。
最后
这份配置的作用是「打开就能看,字幕音轨自动认,HDR 直接通」,没有做压暗部、锐化之类的画面调色——那些因人而异,而且很容易越调越糟。
配置本身没什么原创,都是官方手册和各个 mpv 交流群里的常用做法攒起来的。如果你的屏幕是 8bit,或者显示器刷新率不是片源帧率的整数倍,记得照着上面「几个数值说明一下」改两行再抄。