[Ch.21] MPV Player 官方文檔中有關(guān)屏幕控制器OSC的說明 v0.34.0
本文配合以下專欄食用更佳,善用 Ctrl + F 快速定位你想要的內(nèi)容:



以下摘取自 mpv player 官方使用手冊中的OSC章節(jié),版本 v0.34.0,不保證內(nèi)容的時(shí)效性,僅供參考,實(shí)際還是以官方發(fā)布的最新文檔為準(zhǔn),另外,這部分常用的配置選項(xiàng)我會(huì)額外做一些解釋說明:
屏幕控制器
屏幕控制器(簡稱OSC)是一個(gè)集成在mpv播放器當(dāng)中的最小化圖形界面,用于提供最基本的鼠標(biāo)控制能力,旨在讓新用戶(與軟件)交互起來更為簡便,并且能夠精準(zhǔn)且直接地找到(自己想要的內(nèi)容)
如果mpv在編譯時(shí)帶上了支持Lua的選項(xiàng),那么OSC默認(rèn)是啟用狀態(tài),同時(shí)也能通過使用 --osc=no 選項(xiàng)徹底地禁用它。
使用OSC
默認(rèn)情況下,當(dāng)鼠標(biāo)在播放器窗口內(nèi)移動(dòng)的時(shí)候OSC才會(huì)顯現(xiàn);如果鼠標(biāo)一直停留在OSC感知區(qū)域內(nèi)靜置0.5秒(默認(rèn)時(shí)長,可自定義)或者離開了窗口,OSC則會(huì)自動(dòng)隱藏起來。
界面
先放一張截取自官方文檔內(nèi)的示意圖:

實(shí)際演示效果(紫色矩形框部分):

概覽
| 播放上一項(xiàng) | 播放下一項(xiàng) | 標(biāo)題 | 緩存狀態(tài) |
| 播放/暫停 | 向后跳轉(zhuǎn) | 向前跳轉(zhuǎn) | 經(jīng)過時(shí)長 | 進(jìn)度條 | 剩余時(shí)長 | 音頻 | 字幕 | 音量 | 全屏 |
播放上一項(xiàng)
鼠標(biāo)左鍵單擊:播放當(dāng)前列表中的前一項(xiàng)
鼠標(biāo)右鍵單擊:顯示播放列表
Shift + L 配合鼠標(biāo)左鍵單擊:顯示播放列表(挺雞肋的,容易誤觸切換 inf 模式)
播放下一項(xiàng)
鼠標(biāo)左鍵單擊:播放當(dāng)前列表中的后一項(xiàng)
鼠標(biāo)右鍵單擊:顯示播放列表
Shift + L 配合鼠標(biāo)左鍵單擊:顯示播放列表
標(biāo)題
當(dāng)鼠標(biāo)懸停在進(jìn)度條上時(shí),顯示當(dāng)前的媒體標(biāo)題、文件名、自定義標(biāo)題,或是目標(biāo)章節(jié)名稱
鼠標(biāo)左鍵單擊:顯示當(dāng)前在播放列表中的位置,長度信息以及完整標(biāo)題
鼠標(biāo)右鍵單擊:顯示當(dāng)前文件名
緩存狀態(tài)
顯示當(dāng)前緩存的裝填狀態(tài)
播放
鼠標(biāo)左鍵單擊:切換至播放/暫停
向后跳轉(zhuǎn)
鼠標(biāo)左鍵單擊:前往開頭章節(jié)/上一章節(jié)
鼠標(biāo)右鍵單擊:顯示章節(jié)列表
Shift + L 配合鼠標(biāo)左鍵單擊:顯示章節(jié)列表
向前跳轉(zhuǎn)
鼠標(biāo)左鍵單擊:前往下一章節(jié)
鼠標(biāo)右鍵單擊:顯示章節(jié)列表
Shift + L 配合鼠標(biāo)左鍵單擊:顯示章節(jié)列表
經(jīng)過時(shí)長
顯示當(dāng)前播放位置的時(shí)間戳
鼠標(biāo)左鍵單擊:切換顯示帶毫秒的時(shí)間碼
進(jìn)度條
提示當(dāng)前播放位置與章節(jié)位置
鼠標(biāo)左鍵單擊:跳轉(zhuǎn)播放位置
剩余時(shí)間
顯示剩余播放時(shí)間戳
鼠標(biāo)左鍵單擊:在總時(shí)長與剩余時(shí)長之間切換
音頻與字幕
顯示當(dāng)前選擇的音頻/字幕軌,以及可用的軌道數(shù)量
鼠標(biāo)左鍵單擊:向前循環(huán)(并切換)音頻/字幕軌
鼠標(biāo)右鍵單擊:向后循環(huán)(并切換)音頻/字幕軌
Shift + L 配合鼠標(biāo)左鍵單擊:顯示可用的音頻/字幕軌
音量
鼠標(biāo)左鍵單擊:切換至靜音
鼠標(biāo)滾輪:音量增大/減小
全屏
鼠標(biāo)左鍵單擊:切換至全屏模式
快捷鍵
若沒有其他內(nèi)容綁定到這些鍵位的話,以下快捷鍵默認(rèn)是激活狀態(tài)。如果出現(xiàn)沖突,那么對應(yīng)的功能需要綁定至不同的鍵位上去,請參考 Ch.20.2.4 Script Commands 小節(jié)的內(nèi)容(見下文)
Del
在 “從不/自動(dòng)(移動(dòng)鼠標(biāo)時(shí)觸發(fā))/總是” 這三種(OSC)可視模式間循環(huán)切換
配置
OSC通過存放在mpv用戶目錄下的 script-opts/osc.conf 配置文件,以及 --script-opts 命令行選項(xiàng),提供了有限的配置能力。其中,以命令行形式提供的選項(xiàng)會(huì)覆蓋配置文件中對應(yīng)的配置設(shè)定。
配置語法
配置文件必須完全遵照下列語法規(guī)則:
注意:'#' 只能用在一行的開頭處并且在'='或其他部分的周圍是沒有多余空格的
命令行語法
為了避免和其他腳本發(fā)生沖突,所有選項(xiàng)都需要帶上 osc- 前綴(并且選項(xiàng)與選項(xiàng)之間用半角逗號分隔)
示例:
配置項(xiàng)
layout(布局)
默認(rèn):bottombar(OSC信息欄位于窗口底部)
OSC界面布局,目前可用的布局形式有:box,slimbox,bottombar,以及 topbar,在 0.21.0 版本之前的默認(rèn)布局為 box
seekbarstyle(進(jìn)度條樣式)
默認(rèn):bar(條狀)
設(shè)置當(dāng)前播放位置標(biāo)記的樣式以及進(jìn)度條整體形狀:bar,diamond,或者 knob(一般選擇默認(rèn)即可,符合現(xiàn)有的使用習(xí)慣)
seekbarhandlesize(進(jìn)度條大?。?/p>
默認(rèn):0.6
如果 seekbarstyle 被設(shè)置為 dimaond 或 knob 樣式,則表示為進(jìn)度條的大小比例,并且是相較于進(jìn)度條的整個(gè)高度而言。
seekbarkeyframes(進(jìn)度條關(guān)鍵幀)
默認(rèn):yes
控制拖動(dòng)進(jìn)度條時(shí)用來跳轉(zhuǎn)的模式,如果設(shè)為 yes,使用默認(rèn)的跳轉(zhuǎn)模式(一般是關(guān)鍵幀,不過播放器的默認(rèn)模式以及啟發(fā)形式都可以被更加精確地修改),若是設(shè)為 no,則會(huì)根據(jù)鼠標(biāo)拖動(dòng)程度使用精確跳轉(zhuǎn)。使用關(guān)鍵幀會(huì)更好些,但在一些無法找到關(guān)鍵幀的情形下,精確跳轉(zhuǎn)或許會(huì)更好用些。需要注意的是,使用精確跳轉(zhuǎn)可能會(huì)讓鼠標(biāo)拖動(dòng)表現(xiàn)地更加遲緩。
seekrangestyle(跳轉(zhuǎn)區(qū)間樣式)
默認(rèn):inverted(倒置)
顯示進(jìn)度條上可跳轉(zhuǎn)的區(qū)間,bar 選項(xiàng)會(huì)將這些區(qū)間顯示在具有全高的進(jìn)度條上,line 選項(xiàng)將作為一條粗線條,以及 inverted 將會(huì)以一條細(xì)線條的形式倒置在對應(yīng)的播放位置標(biāo)記的上方,none 選項(xiàng)則會(huì)隱藏這些區(qū)間。此外,slider 選項(xiàng)會(huì)基于 seekbarstyle 選項(xiàng)會(huì)在進(jìn)度條內(nèi)顯示一行持久性的條形區(qū)域,并在其內(nèi)部標(biāo)記緩存的范圍,需要注意的是,上述行為會(huì)根據(jù) seekbarstyle 選項(xiàng)內(nèi)容表現(xiàn)出不同的效果。同樣,slider 選項(xiàng)在 seekbarstyle 設(shè)為 bar 模式下是不會(huì)生效的。
seekrangeseparate(跳轉(zhuǎn)區(qū)間隔離)
默認(rèn):yes
控制是否在進(jìn)度條頂部顯示線形可跳轉(zhuǎn)區(qū)間,或者是如果 seekbarstyle 被設(shè)為 bar 模式,則彼此之間分隔。
seekrangealpha(跳轉(zhuǎn)區(qū)間透明度通道值)
默認(rèn):200
可跳轉(zhuǎn)區(qū)間的 Alpha 通道值,范圍是 0(不透明) ~ 255(完全透明)
(注意,這與一般認(rèn)為的透明度數(shù)值含義和變化規(guī)律正好相反)
deadzonesize(盲區(qū)大?。?/p>
默認(rèn):0.5
表示盲區(qū)的大小,盲區(qū)是指一塊能夠讓鼠標(biāo)的行為像是離開窗口一樣的區(qū)域,當(dāng)鼠標(biāo)移入這塊區(qū)域的那一刻,OSC便不再繼續(xù)顯示并立刻將自己隱藏起來。盲區(qū)會(huì)從OSC相對的窗口邊框開始,并且上述大小控制著它到底會(huì)跨越多大的窗口空間,數(shù)值從 0 ~ 1.0,其中 0 表示當(dāng)鼠標(biāo)在窗口內(nèi)移動(dòng)時(shí)OSC始終會(huì)彈出顯示,1 表示僅當(dāng)鼠標(biāo)懸停在OSC上面的時(shí)候才會(huì)顯示。在 0.21.0 版本之前默認(rèn)是 0
(這里說明一下,OSC的顯示是有時(shí)長限制的,默認(rèn)是500ms,隨后是200ms的漸變消失動(dòng)畫,當(dāng)然是支持自定義的,下面會(huì)講到。只有當(dāng)鼠標(biāo)在窗口內(nèi)移動(dòng)時(shí),盲區(qū)除外,OSC界面才會(huì)顯示,你可以試著在窗口內(nèi)先把OSC喚醒,然后立刻將鼠標(biāo)移動(dòng)到窗口外,無論OSC剩余顯示時(shí)長還剩多少都會(huì)立刻隱藏,可能延時(shí)設(shè)置地長一點(diǎn)效果會(huì)更明顯。然后這個(gè)盲區(qū)的效果與上述情況差不多,默認(rèn)是占上半個(gè)窗口的區(qū)域,可以快速隱藏OSC)
minmousemove(鼠標(biāo)最小移動(dòng)像素)
默認(rèn):0
鼠標(biāo)在每個(gè)時(shí)間刻度之前能夠讓OSC顯示的最小移動(dòng)像素?cái)?shù),在 0.21.0 版本之前默認(rèn)是 3
showwindowed(在窗口中顯示)
默認(rèn):yes
允許OSC在窗口模式下顯示
showfullscreen(在全屏下顯示)
默認(rèn):yes
允許OSC在全屏模式下顯示
scalewindowed(在窗口中的比例)
默認(rèn):1.0
OSC在窗口模式下的尺寸比例因子
scalefullscreen(在全屏中的比例)
默認(rèn):1.0
OSC在全屏模式下的尺寸比例因子
scaleforcedwindow(在強(qiáng)制窗口中的比例)
默認(rèn):2.0
OSC渲染到強(qiáng)制(虛擬)窗口中的尺寸比例因子
vidscale(按視頻畫面比例進(jìn)行縮放)
默認(rèn):yes
伴隨著視頻畫面比例縮放OSC的大小,且不會(huì)嘗試著在窗口大小允許的前提下保持OSC大小恒定不變。
valign(垂直對齊)
默認(rèn):0.8
垂直對齊,數(shù)值范圍從 -1(窗口頂部) ~ 1(窗口底部)
halign(水平對齊)
默認(rèn):0.0
水平對齊,數(shù)值范圍從 -1(窗口左側(cè)) ~ 1(窗口右側(cè))
barmargin(進(jìn)度條邊距)
默認(rèn):0
距離底部(底部欄)或者頂部(頂部欄)的邊距,按像素計(jì)算。
boxalpha(背景框透明度)
默認(rèn):80
(OSC界面)背景框的透明度,數(shù)值從 0(不透明)~ 255(完全透明)
hidetimeout(OSC界面隱藏超時(shí)時(shí)長)
默認(rèn):500
在沒有鼠標(biāo)活動(dòng)的情況下OSC從顯示進(jìn)入隱藏狀態(tài)的時(shí)長,以ms為單位,且不能為負(fù)值。
(簡單點(diǎn)來說就是顯示時(shí)長,OSC默認(rèn)是非常駐,僅在播放器窗口的感應(yīng)區(qū)域內(nèi)檢測到鼠標(biāo)移動(dòng)時(shí)觸發(fā)顯示)
fadeduration(OSC界面逐漸淡化時(shí)長)
默認(rèn):200
漸變淡化效果時(shí)長,以ms為單位,0 表示隱藏時(shí)不會(huì)有漸變效果
(OSC在經(jīng)過 hidetimeout 時(shí)長的顯示之后,以逐漸淡化的效果過渡為隱藏狀態(tài),可以減緩OSC突然消失帶來的生硬感)
title(OSC信息欄標(biāo)題)
默認(rèn):${media-title}(當(dāng)前播放的媒體文件標(biāo)題)
將支持屬性拓展的字符串作為OSC標(biāo)題顯示在界面上,其中ASS標(biāo)簽將會(huì)被轉(zhuǎn)義,并且換行符和尾部斜杠符會(huì)被剔除。
tooltipborder(工具提示框邊界)
默認(rèn):1
當(dāng)使用底部欄或頂部欄布局時(shí),提示信息邊框大小。
timetotal
默認(rèn):no
顯示當(dāng)前播放總時(shí)長而不是剩余時(shí)間。
(默認(rèn)是顯示剩余時(shí)長,但出于習(xí)慣原因,我更傾向于顯示總時(shí)長)
timems(顯示時(shí)間精確到ms級別)
默認(rèn):no
顯示帶毫秒的時(shí)間碼。
visibility(OSC可見性)
默認(rèn):auto(根據(jù)鼠標(biāo)移動(dòng)自動(dòng)隱藏或顯示)
同樣也支持 never 與 always 選項(xiàng)
boxmaxchars(OSC標(biāo)題欄最大支持字符數(shù))
默認(rèn):80
位于OSC邊框布局內(nèi)的標(biāo)題最大字符數(shù),mpv自身并不會(huì)檢測顯示在屏幕上的文本文字寬度,因此才需要限制字符數(shù)。默認(rèn)值會(huì)比較保守些,這允許在使用寬字體的情況下不會(huì)溢出。不過,對于許多常見的字體來說,可以使用更大些的數(shù)值作為參數(shù)。
boxvideo(視頻邊框)
默認(rèn):no
選擇是否將OSC界面置于視頻之上(參數(shù)設(shè)為 no),或是將那些未被OSC界面覆蓋的視頻區(qū)域用邊框框起來(參數(shù)設(shè)為 yes)。若設(shè)置該選項(xiàng),則 OSC 可能會(huì)覆蓋 --video-margin-ratio-* 選項(xiàng),即使用戶已經(jīng)設(shè)置過(如果所有的這些選項(xiàng)都是設(shè)為默認(rèn)值的話,那樣就不會(huì)去覆蓋其中的內(nèi)容)。此外,visibility 必須設(shè)為 always,否則該選項(xiàng)不會(huì)起任何作用。
目前,這個(gè)選項(xiàng)僅受到底部欄和頂部欄布局的支持,而其他布局不受此影響。個(gè)別情況下,如果存在窗口控件(見下文),無論使用的是何種OSC布局都會(huì)受到影響。
另外,上述邊框是靜態(tài)的,即使OSC設(shè)為僅在鼠標(biāo)交互時(shí)顯示,也照樣會(huì)常駐顯示。如果OSC是不可見的,那么邊框僅會(huì)用背景顏色進(jìn)行填充(默認(rèn)為黑色)
當(dāng)前這個(gè)選項(xiàng)會(huì)使得OSC界面與字幕重疊在一起(如果 --sub-use-margins 選項(xiàng)設(shè)為 yes,則為默認(rèn)值),這個(gè)問題或許會(huì)在以后的版本中被修復(fù)。
這在類似用 --vo=xv 作為視頻輸出,將OSD渲染到未縮放的視頻中的情況下不會(huì)正常運(yùn)作。
windowcontrols(OSC窗口控件)
默認(rèn):auto(在沒有窗口邊界的情形下顯示窗口控件)
設(shè)置是否將窗口管理控件顯示在視頻之上,如果是,則在窗口的一側(cè)放置控件。這在窗口沒有其他修飾的情況下是可行的,因此已被顯示設(shè)置為禁用狀態(tài)(例如 border = no),又或是因?yàn)楫?dāng)前平臺(tái)不足以支持這些控件(例如:帶有 wayland 的 gnome-shell)
窗口控件集基本是固定的,并且提供了 minimize,maximize 以及 quit 方法,并不是所有的平臺(tái)都實(shí)現(xiàn)了 minimize 和 maximize 方法,但 quit 肯定是能運(yùn)作的
windowcontrols_alignment(窗口控件對齊方式)
默認(rèn):right(右對齊)
若顯示窗口控件,則指明需要同那一側(cè)對齊
支持 left 和 right 參數(shù),將控件分別放在各自對應(yīng)的側(cè)邊。
greenandgrumpy
默認(rèn):no
設(shè)置為 yes 將減少節(jié)日彩蛋(比如說禁用12月份的圣誕帽彩蛋)
livemarkers
默認(rèn):yes
根據(jù)持續(xù)時(shí)長的變化,更新章節(jié)標(biāo)記的位置,例如直播,更新過程是未經(jīng)優(yōu)化過的,因此考慮在性能非常低端的系統(tǒng)上禁用此功能。
腳本命令
OSC腳本會(huì)監(jiān)聽明確的腳本命令,這些命令可以是綁定在 input.conf 配置文件中,或者是通過其他腳本發(fā)送得到。
osc-message
使用OSC在屏幕上顯示一條消息,第一項(xiàng)參數(shù)是消息,第二項(xiàng)參數(shù)是以秒為單位的持續(xù)時(shí)長。
osc-visibility
控制可見模式有 never / auto(根據(jù)鼠標(biāo)移動(dòng))/ always 還包括 cycle 用于在各個(gè)模式之間循環(huán)切換。
示例:
你可以將下列內(nèi)容保存在 input.conf 配置文件當(dāng)中,效果是使用 a 鍵隱藏OSC界面,使用 b 鍵將模式設(shè)置成 auto(默認(rèn)模式):
osc-playlist, osc-chapterlist, osc-tracklist
使用OSC顯示對應(yīng)類型列表的有限視圖,第一項(xiàng)參數(shù)是按秒計(jì)算的持續(xù)時(shí)長。

參考資料:
https://mpv.io/manual(MPV Player Reference)
https://mpv.io(mpv項(xiàng)目官網(wǎng))
