找回密码
 立即注册
查看: 10974|回复: 17

[MPV] 从零开始 打造属于自己的osc UI

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火 发表于 2020-5-21 21:05:52 | 显示全部楼层 |阅读模式
本帖最后由 孤雨独火 于 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字幕格式规范
    批注 2020-05-21 172746.jpg
    看下图所示的默认的布局元素(我是用的topbar布局进行实验)
    Snipaste_2020-05-21_20-46-05.jpg
    我已经把同类格式进行了颜色区分,各类元素在bottombar/topbar layout中所受对应的参数影响,已在图中标出。
    以其中一条元素的参数为例:
    1. timecodesBar = "{\\blur0\\bord0\\1c&H00FF00\\3c&HFFFFFF\\fs27}"
    复制代码
    blur控制元素的高斯模糊,bord 控制元素边框粗细。
    下边这个 1c&H 是控制元素的颜色,后边接的 00FF00 是rgb数值,但是根据ass规范,必须RRGGBB反写成BBGGRR格式,例如:
    Snipaste_2020-05-21_20-53-29.jpg
    你喜欢这个颜色,查找rgb表显示数值为 #20B2AA,但是必须写成 1c&HAAB220 才能正确显示这个颜色。3c&HFFFFFF 是边框颜色。
    fs 即元素的大小。
  • classic box layout
    曾经的经典布局,第三方ui也主要靠修改这个布局进行自定义。(你喜欢这个布局?直接看测试部分调出这个布局)
    Snipaste_2020-05-21_21-15-57.jpg
    大部分元素的对应参数不同,已在图中标出。
    osc.lua Layouts 部分是经典布局的具体设定
    Snipaste_2020-05-21_21-40-57.jpg
    w , h 不用多说,r 为矩形的圆角度,至于 p 则是内边距(元素到box的距离,设定越高元素越挤在一起)
    local posX , Y 设定的是box的相对位置,如果你嫌默认的高度太上,就如图中一样操作,+数字 使box往下。(不推荐此处修改,通过 osc.conf 中对应参数调节)
  • slimbox layout
    过于简洁,反而感觉基本的功能缺失~~~u1s1应该没人用这个吧,略
    Snipaste_2020-05-21_21-19-22.jpg
  • mpv_thumbnail_script相关
    找到 display options 这一部分
    Snipaste_2020-05-21_21-24-44.jpg
    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 中需要以下两条前置命令:
  1. osc=no # 这一步是禁用了内置的osc脚本
  2. load-scripts=yes
复制代码
并且在 你的mpv配置文件夹/script-opts/ 中建立 osc.conf ,并内置三行命令:
  1. layout=box # 这一步是选择你所要应用的布局,默认为"bottombar",其他还有"topbar"和极限精简的"slimbox"
  2. seekbarstyle=bar # 你还可以选择 diamond/knob 试试看
  3. boxalpha=100 # <0-255> 此项控制osc整体透明度,数值为0时不透明(缩略图脚本的边框透明度不受此项控制)
复制代码
打开mpv看视频,已经应用新的布局。(当然mpv文件夹路径不要有奇怪的字符,包括中文,创建的文本注意换行转换,否则无法在最新版mpv中生效)
Snipaste_2020-05-26_16-19-45.jpg
  • 其它
基于mpv缩略图脚本修改的用户,你的缩略图在y轴位置在不同布局下位置也并不同;
关于 osc.conf 的其他可行参数在 osc.lua 中有描述,请不要在lua里边直接修改,将你想要调整的参数写进 osc.conf ,会自动覆盖 osc.lua 中的预设值。
批注 2020-05-21 180320.jpg

这只是个初步的修改教程,因为这个代码过于复杂超过了我目前的理解能力,所以我也只能写到这里。
同理,测试part的那些操作同样适用于你在网上找的第三方UI。比如仿IINA或者pot:

iina.jpg
pot.jpg


附:翻译整理的 osc.conf 中可设定的参数
注意格式,此文档不支持 boxalpha=170 # -- box元素的整体透明度 这类写法,注释须另起一行。
  1. #showwindowed=true
  2. # -- 窗口化时显示OSC 默认:是
  3. #showfullscreen=true
  4. # -- 全屏时显示OSC 默认:是

  5. #scalewindowed=1
  6. # -- 窗口化时OSC的缩放系数 默认:1
  7. #scalefullscreen=1
  8. # -- 全屏时OSC的缩放系数 默认:1
  9. #scaleforcedwindow=2
  10. # -- 在强制窗口上渲染时缩放?? 默认:2 --scaling when rendered on a forced window
  11. #vidscale=true
  12. # -- 随视频大小缩放OSC? 默认:是

  13. valign=0.96
  14. # -- 垂直对齐 默认0.8 --vertical alignment, -1 (top) to 1 (bottom)
  15. #halign=0
  16. # -- 水平对齐 默认0 --horizontal alignment, -1 (left) to 1 (right)
  17. #barmargin=0
  18. #-- 使用"bottombar/topbar"布局时的底/顶栏的垂直边距,默认0

  19. boxalpha=170
  20. # -- box元素的整体透明度 默认80 -- 0 (opaque) to 255 (fully transparent)

  21. #hidetimeout=500
  22. # -- 如果鼠标没有移动,则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".
  23. #fadeduration=200
  24. # -- 淡出持续时间(毫秒)默认:200 , 0 = no fade

  25. #deadzonesize=0.5
  26. # -- size of deadzone

  27. #minmousemove=0
  28. # -- 鼠标必须在刻度之间移动的最小像素数才能显示OSC,默认:0

  29. #iamaprogrammer=false
  30. # -- 使用 native mpv values 并禁用 OSC internal track list management(以及一些依赖于它的功能),默认:否

  31. layout=box
  32. # -- 选择内置的布局方案:box, slimbox, 默认bottombar, topbar
  33. seekbarstyle=bar
  34. # -- 选择进度条样式:默认bar, diamond, knob

  35. #seekbarhandlesize=0.6
  36. # -- diamond与knob的尺寸比

  37. #seekrangestyle=inverted
  38. # -- seekrange的风格:bar, line, slider, 默认inverted, none
  39. #seekrangeseparate=true
  40. # -- 是否将seekranges覆盖在bar-style的进度条上,默认:是
  41. #seekrangealpha=200
  42. # -- seekrange的透明度,默认:200

  43. #seekbarkeyframes=true
  44. # -- 拖动进度条时使用关键帧,默认:是

  45. #title="${media-title}"
  46. # -- 与属性扩展兼容的字符串,显示为OSC标题 --string compatible with property-expansion to be shown as OSC title

  47. #tooltipborder=1
  48. # -- "bottom/topbar"布局中的工具提示边框 --border of tooltip in bottom/topbar

  49. #timetotal=false
  50. # -- 显示总时间而不是剩余时间?默认 否
  51. #timems=false
  52. # -- 以毫秒为单位显示时间码?默认:否 display timecodes with milliseconds?

  53. #visibility="auto"
  54. # -- only used at init to set visibility_mode(...)

  55. #boxmaxchars=99
  56. # -- 在"box"布局下的标题字符数的上限值,原版osc.lua中默认:80;懒人包版默认:99

  57. #boxvideo=false
  58. # -- apply osc_param.video_margins to video

  59. #windowcontrols="auto"
  60. # -- 是否显示窗口控件 默认:auto
  61. #windowcontrols_alignment="right"
  62. # -- 在哪一侧显示窗口控件 默认:右

  63. #greenandgrumpy=false
  64. # -- 禁用圣诞帽 默认:否 --disable santa hat
复制代码






评分

参与人数 2活跃度 +1800 收起 理由
kyriakos + 800 很给力!
霄月銀牙 + 1000 很给力!

查看全部评分

回复

使用道具 举报

26

主题

298

回帖

0

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
54135
楚轩 发表于 2020-5-21 22:38:20 | 显示全部楼层
看不懂 膜拜大佬
回复

使用道具 举报

5

主题

492

回帖

215

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
368961
苏辰汐 发表于 2020-5-22 09:39:01 | 显示全部楼层
其实默认的osc就可以了,暂时没必要折腾,因为其他osc好像并不支持章节显示,比较头痛的是太复杂没找到显示章节标题的方法。
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-22 14:12:17 | 显示全部楼层
苏辰汐 发表于 2020-5-22 09:39
其实默认的osc就可以了,暂时没必要折腾,因为其他osc好像并不支持章节显示,比较头痛的是太复杂没找到显示 ...

官方的四个布局都是支持的,第三方应该是改的时候阉割了
回复

使用道具 举报

5

主题

492

回帖

215

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
368961
苏辰汐 发表于 2020-5-22 14:30:44 | 显示全部楼层
孤雨独火 发表于 2020-5-22 14:12
官方的四个布局都是支持的,第三方应该是改的时候阉割了

原来如此,看来我是第三方受害者。不过之前折腾了一圈还是觉得默认的顺眼,无边框扁平化挺好的,其他变回拟物化ui了
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-23 23:11:27 | 显示全部楼层
本帖最后由 孤雨独火 于 2020-5-24 20:01 编辑

0517/0524版osc存在bug,等待官方修复
回复

使用道具 举报

12

主题

174

回帖

0

VC币

注册会员

Rank: 2

积分
1747
Gizmo 发表于 2020-5-26 16:11:13 | 显示全部楼层
問一個不相關的問題

下面這個dark UI是linux版本的,win版本有沒有?

回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-26 16:14:17 | 显示全部楼层
Gizmo 发表于 2020-5-26 16:11
問一個不相關的問題

下面這個dark UI是linux版本的,win版本有沒有?

这个不就是bottombar么,顶部的明显是标题栏,那是操作系统自带的框架啊
回复

使用道具 举报

12

主题

174

回帖

0

VC币

注册会员

Rank: 2

积分
1747
Gizmo 发表于 2020-5-26 16:19:10 | 显示全部楼层
對,標題列,系統自帶?

但是使用深色模式不會跟隨系統啊
回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火  楼主| 发表于 2020-5-26 16:37:58 | 显示全部楼层
Gizmo 发表于 2020-5-26 16:19
對,標題列,系統自帶?

但是使用深色模式不會跟隨系統啊

很显然网站的那张图是个远古版本没换过(连音量/全屏按钮都没有)
然后官方是没有编译版的,所以linux上的全是第三方个人编译的,至于为什么不随颜色变换,这可能是编译的问题(找开发者),也可能是系统的问题。
我的debian系mpv是没有这个问题的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表