本文配合以下专栏食用更佳,善用 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/manual(MPV Player Reference)
-
https://mpv.io(mpv项目官网)