[Ch.20] MPV Player 官方文档中有关屏幕控制器OSC的说明 v0.34.0

本文配合以下专栏食用更佳,善用 Ctrl + F 快速定位你想要的内容:

以下摘取自 mpv player 官方使用手册中的OSC章节,版本 v0.34.0,不保证内容的时效性,仅供参考,实际还是以官方发布的最新文档为准,另外,这部分常用的配置选项我会额外做一些解释说明:

屏幕控制器

屏幕控制器(简称OSC)是一个集成在mpv播放器当中的最小化图形界面,用于提供最基本的鼠标控制能力,旨在让新用户(与软件)交互起来更为简便,并且能够精准且直接地找到(自己想要的内容)

如果mpv在编译时带上了支持Lua的选项,那么OSC默认是启用状态,同时也能通过使用 –osc=no 选项彻底地禁用它。

使用OSC

默认情况下,当鼠标在播放器窗口内移动的时候OSC才会显现;如果鼠标一直停留在OSC感知区域内静置0.5秒(默认时长,可自定义)或者离开了窗口,OSC则会自动隐藏起来。

界面

先放一张截取自官方文档内的示意图:

实际演示效果(紫色矩形框部分):

概览

| 播放上一项 | 播放下一项 | 标题 | 缓存状态 |

| 播放/暂停 | 向后跳转 | 向前跳转 | 经过时长 | 进度条 | 剩余时长 | 音频 | 字幕 | 音量 | 全屏 |

播放上一项

鼠标左键单击:播放当前列表中的前一项

鼠标右键单击:显示播放列表

Shift + L 配合鼠标左键单击:显示播放列表(挺鸡肋的,容易误触切换 inf 模式)

播放下一项

鼠标左键单击:播放当前列表中的后一项

鼠标右键单击:显示播放列表

Shift + L 配合鼠标左键单击:显示播放列表

标题

当鼠标悬停在进度条上时,显示当前的媒体标题、文件名、自定义标题,或是目标章节名称

鼠标左键单击:显示当前在播放列表中的位置,长度信息以及完整标题

鼠标右键单击:显示当前文件名

缓存状态

显示当前缓存的装填状态

播放

鼠标左键单击:切换至播放/暂停

向后跳转

鼠标左键单击:前往开头章节/上一章节

鼠标右键单击:显示章节列表

Shift + L 配合鼠标左键单击:显示章节列表

向前跳转

鼠标左键单击:前往下一章节

鼠标右键单击:显示章节列表

Shift + L 配合鼠标左键单击:显示章节列表

经过时长

显示当前播放位置的时间戳

鼠标左键单击:切换显示带毫秒的时间码

进度条

提示当前播放位置与章节位置

鼠标左键单击:跳转播放位置

剩余时间

显示剩余播放时间戳

鼠标左键单击:在总时长与剩余时长之间切换

音频与字幕

显示当前选择的音频/字幕轨,以及可用的轨道数量

鼠标左键单击:向前循环(并切换)音频/字幕轨

鼠标右键单击:向后循环(并切换)音频/字幕轨

Shift + L 配合鼠标左键单击:显示可用的音频/字幕轨

音量

鼠标左键单击:切换至静音

鼠标滚轮:音量增大/减小

全屏

鼠标左键单击:切换至全屏模式

快捷键

若没有其他内容绑定到这些键位的话,以下快捷键默认是激活状态。如果出现冲突,那么对应的功能需要绑定至不同的键位上去,请参考 Ch.20.2.4 Script Commands 小节的内容(见下文)

Del

在 “从不/自动(移动鼠标时触发)/总是” 这三种(OSC)可视模式间循环切换

配置

OSC通过存放在mpv用户目录下的 script-opts/osc.conf 配置文件,以及 –script-opts 命令行选项,提供了有限的配置能力。其中,以命令行形式提供的选项会覆盖配置文件中对应的配置设定。

配置语法

配置文件必须完全遵照下列语法规则:

注意:’#’ 只能用在一行的开头处并且在’=’或其他部分的周围是没有多余空格的

命令行语法

为了避免和其他脚本发生冲突,所有选项都需要带上 osc- 前缀(并且选项与选项之间用半角逗号分隔)

示例:

配置项

layout(布局)

默认:bottombar(OSC信息栏位于窗口底部)

OSC界面布局,目前可用的布局形式有:box,slimbox,bottombar,以及 topbar,在 0.21.0 版本之前的默认布局为 box

seekbarstyle(进度条样式)

默认:bar(条状)

设置当前播放位置标记的样式以及进度条整体形状:bar,diamond,或者 knob(一般选择默认即可,符合现有的使用习惯)

seekbarhandlesize(进度条大小)

默认:0.6

如果 seekbarstyle 被设置为 dimaond 或 knob 样式,则表示为进度条的大小比例,并且是相较于进度条的整个高度而言。

seekbarkeyframes(进度条关键帧)

默认:yes

控制拖动进度条时用来跳转的模式,如果设为 yes,使用默认的跳转模式(一般是关键帧,不过播放器的默认模式以及启发形式都可以被更加精确地修改),若是设为 no,则会根据鼠标拖动程度使用精确跳转。使用关键帧会更好些,但在一些无法找到关键帧的情形下,精确跳转或许会更好用些。需要注意的是,使用精确跳转可能会让鼠标拖动表现地更加迟缓。

seekrangestyle(跳转区间样式)

默认:inverted(倒置)

显示进度条上可跳转的区间,bar 选项会将这些区间显示在具有全高的进度条上,line 选项将作为一条粗线条,以及 inverted 将会以一条细线条的形式倒置在对应的播放位置标记的上方,none 选项则会隐藏这些区间。此外,slider 选项会基于 seekbarstyle 选项会在进度条内显示一行持久性的条形区域,并在其内部标记缓存的范围,需要注意的是,上述行为会根据 seekbarstyle 选项内容表现出不同的效果。同样,slider 选项在 seekbarstyle 设为 bar 模式下是不会生效的。

seekrangeseparate(跳转区间隔离)

默认:yes

控制是否在进度条顶部显示线形可跳转区间,或者是如果 seekbarstyle 被设为 bar 模式,则彼此之间分隔。

seekrangealpha(跳转区间透明度通道值)

默认:200

可跳转区间的 Alpha 通道值,范围是 0(不透明) ~ 255(完全透明)

(注意,这与一般认为的透明度数值含义和变化规律正好相反)

deadzonesize(盲区大小)

默认:0.5

表示盲区的大小,盲区是指一块能够让鼠标的行为像是离开窗口一样的区域,当鼠标移入这块区域的那一刻,OSC便不再继续显示并立刻将自己隐藏起来。盲区会从OSC相对的窗口边框开始,并且上述大小控制着它到底会跨越多大的窗口空间,数值从 0 ~ 1.0,其中 0 表示当鼠标在窗口内移动时OSC始终会弹出显示,1 表示仅当鼠标悬停在OSC上面的时候才会显示。在 0.21.0 版本之前默认是 0

(这里说明一下,OSC的显示是有时长限制的,默认是500ms,随后是200ms的渐变消失动画,当然是支持自定义的,下面会讲到。只有当鼠标在窗口内移动时,盲区除外,OSC界面才会显示,你可以试着在窗口内先把OSC唤醒,然后立刻将鼠标移动到窗口外,无论OSC剩余显示时长还剩多少都会立刻隐藏,可能延时设置地长一点效果会更明显。然后这个盲区的效果与上述情况差不多,默认是占上半个窗口的区域,可以快速隐藏OSC)

minmousemove(鼠标最小移动像素)

默认:0

鼠标在每个时间刻度之前能够让OSC显示的最小移动像素数,在 0.21.0 版本之前默认是 3

showwindowed(在窗口中显示)

默认:yes

允许OSC在窗口模式下显示

showfullscreen(在全屏下显示)

默认:yes

允许OSC在全屏模式下显示

scalewindowed(在窗口中的比例)

默认:1.0

OSC在窗口模式下的尺寸比例因子

scalefullscreen(在全屏中的比例)

默认:1.0

OSC在全屏模式下的尺寸比例因子

scaleforcedwindow(在强制窗口中的比例)

默认:2.0

OSC渲染到强制(虚拟)窗口中的尺寸比例因子

vidscale(按视频画面比例进行缩放)

默认:yes

伴随着视频画面比例缩放OSC的大小,且不会尝试着在窗口大小允许的前提下保持OSC大小恒定不变。

valign(垂直对齐)

默认:0.8

垂直对齐,数值范围从 -1(窗口顶部) ~ 1(窗口底部)

halign(水平对齐)

默认:0.0

水平对齐,数值范围从 -1(窗口左侧) ~ 1(窗口右侧)

barmargin(进度条边距)

默认:0

距离底部(底部栏)或者顶部(顶部栏)的边距,按像素计算。

boxalpha(背景框透明度)

默认:80

(OSC界面)背景框的透明度,数值从 0(不透明)~ 255(完全透明)

hidetimeout(OSC界面隐藏超时时长)

默认:500

在没有鼠标活动的情况下OSC从显示进入隐藏状态的时长,以ms为单位,且不能为负值。

(简单点来说就是显示时长,OSC默认是非常驻,仅在播放器窗口的感应区域内检测到鼠标移动时触发显示)

fadeduration(OSC界面逐渐淡化时长)

默认:200

渐变淡化效果时长,以ms为单位,0 表示隐藏时不会有渐变效果

(OSC在经过 hidetimeout 时长的显示之后,以逐渐淡化的效果过渡为隐藏状态,可以减缓OSC突然消失带来的生硬感)

title(OSC信息栏标题)

默认:${media-title}(当前播放的媒体文件标题)

将支持属性拓展的字符串作为OSC标题显示在界面上,其中ASS标签将会被转义,并且换行符和尾部斜杠符会被剔除。

tooltipborder(工具提示框边界)

默认:1

当使用底部栏或顶部栏布局时,提示信息边框大小。

timetotal

默认:no

显示当前播放总时长而不是剩余时间。

(默认是显示剩余时长,但出于习惯原因,我更倾向于显示总时长)

timems(显示时间精确到ms级别)

默认:no

显示带毫秒的时间码。

visibility(OSC可见性)

默认:auto(根据鼠标移动自动隐藏或显示)

同样也支持 never 与 always 选项

boxmaxchars(OSC标题栏最大支持字符数)

默认:80

位于OSC边框布局内的标题最大字符数,mpv自身并不会检测显示在屏幕上的文本文字宽度,因此才需要限制字符数。默认值会比较保守些,这允许在使用宽字体的情况下不会溢出。不过,对于许多常见的字体来说,可以使用更大些的数值作为参数。

boxvideo(视频边框)

默认:no

选择是否将OSC界面置于视频之上(参数设为 no),或是将那些未被OSC界面覆盖的视频区域用边框框起来(参数设为 yes)。若设置该选项,则 OSC 可能会覆盖 –video-margin-ratio-* 选项,即使用户已经设置过(如果所有的这些选项都是设为默认值的话,那样就不会去覆盖其中的内容)。此外,visibility 必须设为 always,否则该选项不会起任何作用。

目前,这个选项仅受到底部栏和顶部栏布局的支持,而其他布局不受此影响。个别情况下,如果存在窗口控件(见下文),无论使用的是何种OSC布局都会受到影响。

另外,上述边框是静态的,即使OSC设为仅在鼠标交互时显示,也照样会常驻显示。如果OSC是不可见的,那么边框仅会用背景颜色进行填充(默认为黑色)

当前这个选项会使得OSC界面与字幕重叠在一起(如果 –sub-use-margins 选项设为 yes,则为默认值),这个问题或许会在以后的版本中被修复。

这在类似用 –vo=xv 作为视频输出,将OSD渲染到未缩放的视频中的情况下不会正常运作。

windowcontrols(OSC窗口控件)

默认:auto(在没有窗口边界的情形下显示窗口控件)

设置是否将窗口管理控件显示在视频之上,如果是,则在窗口的一侧放置控件。这在窗口没有其他修饰的情况下是可行的,因此已被显示设置为禁用状态(例如 border = no),又或是因为当前平台不足以支持这些控件(例如:带有 wayland 的 gnome-shell)

窗口控件集基本是固定的,并且提供了 minimize,maximize 以及 quit 方法,并不是所有的平台都实现了 minimize 和 maximize 方法,但 quit 肯定是能运作的

windowcontrols_alignment(窗口控件对齐方式)

默认:right(右对齐)

若显示窗口控件,则指明需要同那一侧对齐

支持 left 和 right 参数,将控件分别放在各自对应的侧边。

greenandgrumpy

默认:no

设置为 yes 将减少节日彩蛋(比如说禁用12月份的圣诞帽彩蛋)

livemarkers

默认:yes

根据持续时长的变化,更新章节标记的位置,例如直播,更新过程是未经优化过的,因此考虑在性能非常低端的系统上禁用此功能。

脚本命令

OSC脚本会监听明确的脚本命令,这些命令可以是绑定在 input.conf 配置文件中,或者是通过其他脚本发送得到。

osc-message

使用OSC在屏幕上显示一条消息,第一项参数是消息,第二项参数是以秒为单位的持续时长。

osc-visibility

控制可见模式有 never / auto(根据鼠标移动)/ always 还包括 cycle 用于在各个模式之间循环切换。

示例:

你可以将下列内容保存在 input.conf 配置文件当中,效果是使用 a 键隐藏OSC界面,使用 b 键将模式设置成 auto(默认模式):

osc-playlist, osc-chapterlist, osc-tracklist

使用OSC显示对应类型列表的有限视图,第一项参数是按秒计算的持续时长。

参考资料:

  • https://mpv.io/manualMPV Player Reference

  • https://mpv.iompv项目官网

资源下载: