Skip to content

CONFIGURATION FILES(配置文件)

位置和语法

您可以将所有选项放在配置文件中,这些文件将在每次运行 mpv 时被读取。系统级配置文件 mpv.conf 位于您的配置目录中(例如 /etc/mpv/usr/local/etc/mpv),用户特定的配置文件是 ~/.config/mpv/mpv.conf。有关详细信息和平台特定信息(特别是 Windows 路径),请参阅 FILES 部分。

用户特定选项覆盖系统级选项,命令行给出的选项覆盖两者。配置文件的语法是 option=value# 之后的所有内容都被视为注释。不需要值的选项可以通过设置为 yes 启用,设置为 no 禁用,如果省略值,则隐含 yes。即使是子选项也可以用这种方式指定。

示例配置文件

bash
# 不允许新窗口大于屏幕。
autofit-larger=100%x100%
# 如果可用,启用硬件解码,=yes 是隐含的。
hwdec
# 空格不需要转义。
osd-playing-msg=File: ${filename}

转义特殊字符

这与命令行选项的处理方式相同。配置条目可以用 "' 以及前面提到的固定长度语法(%n%)引用。这就像将引用字符串的确切内容作为命令行选项传递一样。C 风格的转义目前在这一层不会被解释,尽管有些选项会手动执行此操作(这很混乱,可能应该在某个时候更改)。这里不涉及 shell,因此选项值只需要引用以转义值中任何位置的 #、值开头的 "'%,以及前导和尾随空格。

将命令行选项放入配置文件

几乎所有命令行选项都可以放入配置文件中。这是一个小指南:

选项配置文件条目
--flagflag
-opt valopt=val
--opt=valopt=val
-opt "has spaces"opt=has spaces

文件特定配置文件

您还可以编写文件特定配置文件。如果您希望为名为 video.avi 的文件创建配置文件,请创建一个名为 video.avi.conf 的文件,其中包含文件特定选项,并将其放在 ~/.config/mpv/ 中。您也可以将配置文件放在与要播放的文件相同的目录中。两者都需要您设置 --use-filedir-conf 选项(在命令行或全局配置文件中)。如果在同一目录中找到文件特定配置文件,则不会从 ~/.config/mpv 加载文件特定配置。此外,--use-filedir-conf 选项启用目录特定配置文件。为此,mpv 首先尝试从与播放文件相同的目录加载 mpv.conf,然后尝试加载任何文件特定配置。

配置文件(Profiles)

为了便于使用不同的配置,可以在配置文件中定义配置文件。配置文件以其名称在方括号中开头,例如 [my-profile]。以下所有选项都将成为配置文件的一部分。可以使用 profile-desc 选项定义描述(由 --profile=help 显示)。要结束配置文件,请启动另一个配置文件或使用配置文件名称 default 继续使用正常选项。

您可以使用 --profile=help 列出配置文件,并使用 --show-profile=<name> 显示配置文件的内容(将 <name> 替换为配置文件名称)。您可以在启动时使用 --profile=<name> 选项应用配置文件,或在运行时使用 apply-profile <name> 命令应用配置文件。

带配置文件的 mpv 配置文件示例

bash
# 正常的顶级选项
fullscreen=yes

# 可以使用 --profile=big-cache 启用的配置文件
[big-cache]
cache=yes
demuxer-max-bytes=512MiB
demuxer-readahead-secs=20

[network]
profile-desc="profile for content over network"
force-window=immediate
# 您也可以包含其他配置文件
profile=big-cache

[reduce-judder]
video-sync=display-resample
interpolation=yes

# 再次使用配置文件会扩展它
[network]
demuxer-max-back-bytes=512MiB
# 引用内置配置文件
profile=low-latency

运行时配置文件

配置文件可以在运行时使用 apply-profile 命令设置。由于此操作是"破坏性的"(配置文件中的每个项目都简单地设置为选项,覆盖以前的值),您不能只是再次启用和禁用配置文件。

作为部分补救,有一种方法可以让配置文件在用配置文件值覆盖旧选项值之前保存旧选项值,然后在以后使用 apply-profile <profile-name> restore 恢复旧值。

这可以使用 profile-restore 选项启用,该选项接受以下选项之一:

  • default - 什么都不做,也无法恢复(默认)。
  • copy - 应用配置文件时,在从配置文件设置之前,将所有配置文件选项的旧值复制到备份中。恢复时,这些选项会使用备份重置为其旧值。每个配置文件都有自己的备份值列表。如果备份已存在(例如,如果连续多次调用 apply-profile name),则现有备份不会更改。恢复操作将删除备份。
  • copy-equal - 类似于 copy,但仅在选项具有与配置文件有效设置的值相同时才恢复选项。这试图处理用户不想在交互式更改后重置选项的情况。

条件自动配置文件

设置了 profile-cond 选项的配置文件会在关联条件匹配时自动应用(除非禁用了自动配置文件)。该选项接受一个字符串,该字符串被解释为 Lua 表达式。如果表达式求值为真,则应用配置文件。如果表达式出错或求值为假,则不应用配置文件。此 Lua 代码执行不是沙盒化的。

条件表达式中的任何变量都可以引用属性。如果标识符尚未被 Lua 或 mpv 定义,则将其解释为属性。例如,pause 将返回当前暂停状态。您不能以这种方式引用带有 - 的属性,因为那将表示减法,但如果变量名包含任何 _ 字符,它们会变成 -。例如,playback_time 将返回属性 playback-time

访问属性的更可靠方法是使用 p.property_nameget("property-name", default_value)

每当配置文件条件引用的属性发生变化时,条件都会被重新评估。如果条件的返回值从假或错误变为真,则应用配置文件。

此机制尝试在条件从真变为假或错误时"取消应用"配置文件。如果您想使用此功能,需要为配置文件设置 profile-restore。另一种可能性是创建另一个具有相反条件的配置文件来撤销另一个配置文件。

警告

  • 如果您的条件使用 p.playback_time,条件大约在每个视频帧上重新评估。这可能很慢。
  • 此功能受无限期更改。您可能需要在 mpv 更新时调整配置文件。

遗留自动配置文件

一些配置文件使用遗留机制自动加载。以下示例演示了这一点:

bash
[extension.mkv]
profile-desc="profile for .mkv files"
vf=vflip

配置文件名称遵循 type.name 模式,其中 type 可以是 protocol(用于使用的输入/输出协议),extension(用于当前播放文件路径的扩展名)。

此功能非常有限,被视为软弃用。请使用条件自动配置文件。

相关链接