书接上回:
有关 mpv player 软件自身配置项、文件、目录以及环境变量的说明,在官方提供的使用手册中有详细的描述,但苦于目前仅提供英文一种版本的手册说明,对部分英语基础较为薄弱的中文用户不是特别友好。因此在空余时间里,我会选取官方帮助手册中部分重要章节的内容进行翻译,尽可能地贴合原文含义,必要时会附上一些自己在使用过程中对这些说明项的体会作为注解。但限于个人的英语水平和翻译功底,难免会存在一些纰漏,属于基本能读得通顺、看得懂的效果,无法做到信达雅,望海涵。
以下摘取自 mpv player 官方使用手册中的部分说明,版本 v0.34.0,不保证内容的时效性,仅供参考,实际还是以官方发布的最新文档为准:
Windows平台(配置)文件
在 Win32 模式下(如果软件是由 MinGW 编译得到,而不是 Cygwin 编译器),默认的配置文件存放位置视情况而定,通常是位于 %APPDATA%/mpv/. 路径之下,例如,mpv.conf 的路径就是 %APPDATA%/mpv/mpv.conf,也就是说,对应着的是一个系统特别指定给用户的路径,举例来说就是:
你可以通过在 cmd 当中执行 echo %APPDATA%\mpv\mpv.conf 这条命令来精确找到路径所在位置。其他的配置文件(比方说 input.conf)同样也是在这个目录下,详情参考下方的 FILES 小节。
像是在Unix这类平台上,环境变量 $MPV_HOME 则会完全覆盖这些默认设定。
如果名为 portable_config 的文件夹紧邻着 mpv.exe 存在的情况下(就是和软件本体同处一个目录下),所有的配置项将只会从这个文件夹中读取。有关稍后再看(watch later)的配置文件同样也是写入到该文件夹中(这个特性仅存在于Windows平台,并且对 $MPV_HOME 来说是多余的,不过鉴于Windows平台对于配置脚本非常地不友好,仅通过设置 $MPV_HOME 这一项,就像你通常在其他平台上所作的那样,是不会奏效的,所以才提供了 portable_config 来轻松绕过这个限制)
位于和 mpv.exe 同路径下的配置文件会以更低的优先级被加载(portable_config 除外,Windows环境下 portable_config 具有最高优先级,原因在上面也都说过了),部分配置文件仅会被加载一次,这也就意味着,当第2个例子中的 input.conf 文件如果同时存在于2个配置文件夹中,仅会加载两者中拥有更高优先级的配置文件。
具有最低优先级的第三方配置文件夹是与 mpv.exe 同路径下且名为 mpv 的目录,曾经是拥有最高优先级的配置目录,不过现在已不再提倡使用,而且在不久的将来可能会被移除。
需要注意的是,为了简单起见,mpv 可能会混用 / 和 \ 路径分隔符,这对于 kernel32.dll 来说是无伤大雅,但 cmd 不吃这套。
FILES(类Unix平台)
/usr/local/etc/mpv/mpv.conf
mpv 系统级别的设定(取决于编译时传给 –prefix 选项的配置,mpv 默认会使用 /usr/local/etc/mpv/ 作为自己的配置目录,然而大多数 Linux 发行版会把这项设置为 /etc/mpv/)
~/.config/mpv
标准配置目录,可以被环境变量覆盖,按照升序排列:
-
若 $XDG_CONFIG_HOME 被设定,则派生的配置目录将变为 $XDG_CONFIG_HOME/mpv
-
若 $MPV_HOME 被设置,则派生的配置目录将会变为 $MPV_HOME
如果这个目录(~/.config/mpv)和原始配置目录(见下文)都不存在的话,那么 mpv 会自动尝试创建该目录。
~/.mpv/
原始配置目录(在 0.5.0 版本之前),如果存在的话也会继续从中读取配置项。若此目录与标准配置目录同时存在的话,将会以标准配置目录的内容为优先,读取两者的配置项。然而,你应该完整地(将原始配置目录中的内容)迁移到标准目录下,并且在这种情形下会显示一条警告信息。
~/.config/mpv/mpv.conf
mpv 用户设定(请参考 CONFIGURATION FILES 小节)
~/.config/mpv/input.conf
键位功能绑定(请参考 INPUT.CONF 小节)
~/.config/mpv/fonts.conf
为 mpv 自定义字体的配置文件,你应该在这个文件中包含系统级别的 fonts.conf,不然 mpv 没办法知道你系统中自带有哪些字体。仅当 libass 库带有 fontconfig 构建选项时有可用。
~/.config/mpv/subfont.ttf
备用字幕字体
~/.config/mpv/fonts/
在这个目录下的字体文件会被 mpv/livass 用作字幕的字体,如果你并不像给自己的系统安装字体的话会非常有用,需要注意的是,该目录在被 mpv 使用前会被加载到内存中,如果你有大量字体文件的话,请考虑使用 fonts.conf(见上文)来包含这些额外的字体,这么做会让内存利用更加高效。
~/.config/mpv/scripts/
该目录下的所有文件会在传递给 –script 选项时被加载,并且以字母顺序加载。使用 –load-scripts=no 选项会禁止加载这些文件,详情见 Script location
~/.config/mpv/watch_later/
包含那些开启稍后再看功能特性、需要回溯至文件原先播放进度的临时配置文件,参考 Q 键位默认绑定功能的案例,或者 quit-watch-later 相关的输入命令。
这里面的每个文件都是一个非常小的配置文件,如果关联的媒体文件被载入,其自身也会被读取加载。包含播放进度的位置信息以及部分在播放过程中被修改过的设定(不一定是全部,据我所知包括现场的音量、画面设定也会被保留),用媒体文件完整路径的hash值作为文件名,通常是不可能从这个hash值反推得到多媒体文件名的,不过,你依然可以通过设置 –write-filename-in-watch-later-config 选项,播放器会将多媒体文件名添加到恢复配置文件的内容中去。
~/.config/mpv/script-opts/osc.conf
这是由 OSC 脚本加载的配置文件,详情见 ON SCREEN CONTROLLER 文档。该目录中的其他文件也特定于相关的脚本文件,且 mpv 内核不会去触及
环境变量
有不少的环境变量都可以被用来控制 mpv 播放器的行为
HOME, XDG_CONFIG_HOME
用来决定 mpv 的配置目录,如果 XDG_CONFIG_HOME 未被设定,则使用 $HOME/.config/mpv 标准配置目录。$HOME/.mpv 总会以更低的优先级被添加到配置搜素路径列表中。
MPV_HOME
mpv 用来查找用户设置项的目录,当覆盖 HOME 变量中的设定时,mpv 将会尝试以 $MPV_HOME/mpv.conf 的方式加载配置文件。
MPV_VERBOSE(另见 -v 以及 –msg-level 选项)
设置所有消息模块的初始化详细信息级别(默认为 0),数值为整数,并且最终结果的详细程度与传递给 -v 命令行选项的数值相关。
MPV_LEAK_REPORT
若设置为1,则启用内部 talloc 泄露汇报,如果设为其他值,则禁用泄露报告,若未设定则使用默认值,通常为 0,如果 mpv 使用了 –enable-ta-leak-report 选项进行构建,则默认值为 1,再如果泄露汇报功能在编译时就被禁用了(比如将 NDEBUG 标志添加到自定义 CFLAGS 编译选项中),那么该环境变量将会被忽略。
LADSPA_PATH
指定 LADSPA 插件的搜索路径,如果未被设定,则需要使用完整限定的路径名
DISPLAY
使用标准 X11 显示的名称
FFmpeg/Libav
这个库允许访问多种环境变量,不过他们没有被集中收录,而且为他们撰写文档并不是我们的责任(请前往FFmpeg项目官网查阅相关文档:https://ffmpeg.org),因此在此仅列出一小部分。
值得关注的环境变量:
http_proxy
用于 http:// 和 https:// 代理的 URL
no_proxy
不应使用代理的域名模式列表,列出的每一项用 , 隔开,模式中允许包含 *
libdvdcss
DVDCSS_CACHE
用于存储标题键值对的指定目录,这将加速缓存中的 DVD 解扰,如果 DVDCSS_CACHE 指定目录不存在则会新建,并且会创建一个以 DVD 标题或生产日期为命名的子目录。如果 DVDCSS_CACHE 未被设置或设置为空,libdvdcss 会使用 Unix 平台下 ${HOME}/.dvdcss/ 路径中的默认值,在 Windows 平台下则是%APPDATA%,使用特殊值 “off” 会禁用缓存。
DVDCSS_METHOD
用来指定 libdvdcss 读取加扰光盘的身份验证和解密方法,可以是标题密文、普通密钥、或者爆破光盘
key(普通密钥)
默认方案,libdvdcss 将会使用一组计算过的播放器密钥来尝试获取光盘密钥,可能会在驱动器无法识别任何播放器密钥的情况下失败。
disc(爆破光盘)
尝试密钥失败之后的备用方案,libdvdcss 将不再使用播放器密钥,而是使用暴力算法破解光盘密钥,该过程是 CPU 密集型计算(需要消耗大量 CPU 计算资源),且需要至少 64 MiB 的内存空间用来存储临时数据。
title(标题密文)
这是当其他所有办法都失败后的备选方案,不依赖和 DVD 驱动器进行密钥交换,而是采用加密攻击的办法来猜测标题密钥。在极少数情况下可能会失败,这是因为光盘上没有足够的加密数据来执行统计攻击,但从另一方面来讲,这是用于解密存储在硬盘上,或者放在 RPC2 驱动器上有错误区域的 DVD 的唯一办法。
DVDCSS_RAW_DEVICE
指定要使用的原始设备,具体用法则取决于你的操作系统,例如用来设置原始设备的 Linux 工具是 raw(man 8 raw)。注意,在大多数操作系统中,使用原始设备需要高度对齐的缓冲区:Linux 需要一个 2048 字节对齐的区域(这也是单个 DVD 扇区的大小)
DVDCSS_VERBOSE
设置 libdvdcss 详细信息级别
0:无消息输出
1:输出错误消息至标准错误流(stderr)
2:输出错误消息以及调试信息至标准错误流
DVDREAD_NOKEYS
跳过启动时检索所有密钥,目前已被禁用
退出代码
正常情况下 mpv 在成功结束播放后返回 0 作为退出代码,如果有错误发生,可能会返回下列退出代码:
1:mpv 初始化错误,这也会在给 mpv 传入未知选项时返回
2:无法播放传入给 mpv 的文件,这会有些模糊,因为目前如果大部分初始化过程都能成功的话,即使在此之后的文件播放会立即失败,同样也会被认为是成功播放。
3:部分文件可以播放,部分则失败(使用上述对成功播放的定义作为依据)
4:因接收到信号而退出,默认是在 VO 窗口中键入 Ctrl + c,或者是按下编码模式中代表默认退出的键位绑定。
需要注意的是,手动退出播放器的返回代码始终为 0,并且覆盖退出代码会正常返回,此外,quit 输入命令可以选择退出代码:此时则会返回被选中的退出代码。
参考资料:
-
https://mpv.io/manual(MPV Player Reference)
-
https://mpv.io(mpv项目官网)