我的 MPV 配置

目录

玩 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,或者显示器刷新率不是片源帧率的整数倍,记得照着上面「几个数值说明一下」改两行再抄。