|
本帖最后由 孤雨独火 于 2022-4-18 20:18 编辑
本文已过时,附件已移除
- 前言(mpv0517/0524版osc存在严重bug,临时解决方案issue
在mpv没有官方的GUI前端和全能可靠的第三方前端的情况下,在官方也没有相关的详细文档前提下,并不代表你不能对他进行任何界面元素及进行自定义和美化。
这只是一篇粗浅的修改指南,因为我自己都没研究透彻内部的参数,但是对大部分人来说我所写已经足够满足轻度自定义的需求。
一个基础的代码编辑器,例如 notepad3 / sublime text3 (如果你不嫌两三千行代码眼花的话记事本也能凑活);
获取最新的官方osc脚本 (使用mpv缩略图脚本的用户直接编辑 mpv_thumbnail_script_client_osc.lua / osc_mod.lua);
打开 osc.lua ,巨大的文本量展现在你眼前,莫慌。mpv其实内置了不止一套的布局方案,现在默认的是 bottombar ,topbar 只是把地下的提到了最上方,无他差别。下文所说的 元素 即播放,下一曲,进度条这几个按钮部件。
- bottombar/topbar layout
先从最简单的讲起,如果你喜欢默认的界面只是觉得颜色过于单调,很简单。熟练的Ctrl+F查找到这一部分,如果你是做字幕的专业户,应该对这个语法非常熟悉,毕竟就是ass字幕格式规范。
看下图所示的默认的布局元素(我是用的topbar布局进行实验)
我已经把同类格式进行了颜色区分,各类元素在bottombar/topbar layout中所受对应的参数影响,已在图中标出。
以其中一条元素的参数为例:
- timecodesBar = "{\\blur0\\bord0\\1c&H00FF00\\3c&HFFFFFF\\fs27}"
复制代码 blur控制元素的高斯模糊,bord 控制元素边框粗细。
下边这个 1c&H 是控制元素的颜色,后边接的 00FF00 是rgb数值,但是根据ass规范,必须RRGGBB反写成BBGGRR格式,例如:
你喜欢这个颜色,查找rgb表显示数值为 #20B2AA,但是必须写成 1c&HAAB220 才能正确显示这个颜色。3c&HFFFFFF 是边框颜色。
fs 即元素的大小。 - classic box layout
曾经的经典布局,第三方ui也主要靠修改这个布局进行自定义。(你喜欢这个布局?直接看测试部分调出这个布局)
大部分元素的对应参数不同,已在图中标出。
在 osc.lua 的 Layouts 部分是经典布局的具体设定
w , h 不用多说,r 为矩形的圆角度,至于 p 则是内边距(元素到box的距离,设定越高元素越挤在一起)
local posX , Y 设定的是box的相对位置,如果你嫌默认的高度太上,就如图中一样操作,+数字 使box往下。(不推荐此处修改,通过 osc.conf 中对应参数调节) - slimbox layout
过于简洁,反而感觉基本的功能缺失~~~u1s1应该没人用这个吧,略
- mpv_thumbnail_script相关
找到 display options 这一部分
vertical_offset 控制的是缩略图与进度条的距离。pad_top 这四项目是缩略图的边框粗细。background_color 同样需要反写rgb。background_alpha 即边框背景透明度,注意此项需要单独设置,不受 osc.conf 中的 boxalpha 参数影响。
再往下的 Thumbnail options 这部分不要在osc里修改,在外部的 mpv_thumbnail_script.conf 修改会自动覆盖这些参数。
如何应用自己修改过的osc呢?
如果你是基于 classic box 布局的修改,先将你修改后的 osc.lua (这个脚本名字叫啥无所谓)放置在 你的mpv配置文件夹/scripts/ 中,然后 mpv.conf 中需要以下两条前置命令:
- osc=no # 这一步是禁用了内置的osc脚本
- load-scripts=yes
复制代码 并且在 你的mpv配置文件夹/script-opts/ 中建立 osc.conf ,并内置三行命令:- layout=box # 这一步是选择你所要应用的布局,默认为"bottombar",其他还有"topbar"和极限精简的"slimbox"
- seekbarstyle=bar # 你还可以选择 diamond/knob 试试看
- boxalpha=100 # <0-255> 此项控制osc整体透明度,数值为0时不透明(缩略图脚本的边框透明度不受此项控制)
复制代码 打开mpv看视频,已经应用新的布局。(当然mpv文件夹路径不要有奇怪的字符,包括中文,创建的文本注意换行转换,否则无法在最新版mpv中生效)
基于mpv缩略图脚本修改的用户,你的缩略图在y轴位置在不同布局下位置也并不同;
关于 osc.conf 的其他可行参数在 osc.lua 中有描述,请不要在lua里边直接修改,将你想要调整的参数写进 osc.conf ,会自动覆盖 osc.lua 中的预设值。
这只是个初步的修改教程,因为这个代码过于复杂超过了我目前的理解能力,所以我也只能写到这里。
同理,测试part的那些操作同样适用于你在网上找的第三方UI。比如仿IINA或者pot:
附:翻译整理的 osc.conf 中可设定的参数
注意格式,此文档不支持 boxalpha=170 # -- box元素的整体透明度 这类写法,注释须另起一行。
- #showwindowed=true
- # -- 窗口化时显示OSC 默认:是
- #showfullscreen=true
- # -- 全屏时显示OSC 默认:是
- #scalewindowed=1
- # -- 窗口化时OSC的缩放系数 默认:1
- #scalefullscreen=1
- # -- 全屏时OSC的缩放系数 默认:1
- #scaleforcedwindow=2
- # -- 在强制窗口上渲染时缩放?? 默认:2 --scaling when rendered on a forced window
- #vidscale=true
- # -- 随视频大小缩放OSC? 默认:是
- valign=0.96
- # -- 垂直对齐 默认0.8 --vertical alignment, -1 (top) to 1 (bottom)
- #halign=0
- # -- 水平对齐 默认0 --horizontal alignment, -1 (left) to 1 (right)
- #barmargin=0
- #-- 使用"bottombar/topbar"布局时的底/顶栏的垂直边距,默认0
- boxalpha=170
- # -- box元素的整体透明度 默认80 -- 0 (opaque) to 255 (fully transparent)
- #hidetimeout=500
- # -- 如果鼠标没有移动,则OSC隐藏的持续时间(毫秒)。对用户强制非负,但内部负“始终打开”,默认500。-- duration in ms until the OSC hides if no mouse movement. enforced non-negative for the user, but internally negative is "always-on".
- #fadeduration=200
- # -- 淡出持续时间(毫秒)默认:200 , 0 = no fade
- #deadzonesize=0.5
- # -- size of deadzone
- #minmousemove=0
- # -- 鼠标必须在刻度之间移动的最小像素数才能显示OSC,默认:0
- #iamaprogrammer=false
- # -- 使用 native mpv values 并禁用 OSC internal track list management(以及一些依赖于它的功能),默认:否
- layout=box
- # -- 选择内置的布局方案:box, slimbox, 默认bottombar, topbar
- seekbarstyle=bar
- # -- 选择进度条样式:默认bar, diamond, knob
- #seekbarhandlesize=0.6
- # -- diamond与knob的尺寸比
- #seekrangestyle=inverted
- # -- seekrange的风格:bar, line, slider, 默认inverted, none
- #seekrangeseparate=true
- # -- 是否将seekranges覆盖在bar-style的进度条上,默认:是
- #seekrangealpha=200
- # -- seekrange的透明度,默认:200
- #seekbarkeyframes=true
- # -- 拖动进度条时使用关键帧,默认:是
- #title="${media-title}"
- # -- 与属性扩展兼容的字符串,显示为OSC标题 --string compatible with property-expansion to be shown as OSC title
- #tooltipborder=1
- # -- "bottom/topbar"布局中的工具提示边框 --border of tooltip in bottom/topbar
- #timetotal=false
- # -- 显示总时间而不是剩余时间?默认 否
- #timems=false
- # -- 以毫秒为单位显示时间码?默认:否 display timecodes with milliseconds?
- #visibility="auto"
- # -- only used at init to set visibility_mode(...)
- #boxmaxchars=99
- # -- 在"box"布局下的标题字符数的上限值,原版osc.lua中默认:80;懒人包版默认:99
- #boxvideo=false
- # -- apply osc_param.video_margins to video
- #windowcontrols="auto"
- # -- 是否显示窗口控件 默认:auto
- #windowcontrols_alignment="right"
- # -- 在哪一侧显示窗口控件 默认:右
- #greenandgrumpy=false
- # -- 禁用圣诞帽 默认:否 --disable santa hat
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
评分
-
查看全部评分
|