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

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

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人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字幕格式规范

      看下图所示的默认的布局元素(我是用的topbar布局进行实验)

      我已经把同类格式进行了颜色区分,各类元素在bottombar/topbar layout中所受对应的参数影响,已在图中标出。
      以其中一条元素的参数为例:
      1. 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 中需要以下两条前置命令:
    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中生效)

    • 其它
    基于mpv缩略图脚本修改的用户,你的缩略图在y轴位置在不同布局下位置也并不同;
    关于 osc.conf 的其他可行参数在 osc.lua 中有描述,请不要在lua里边直接修改,将你想要调整的参数写进 osc.conf ,会自动覆盖 osc.lua 中的预设值。


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





    附:翻译整理的 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
    复制代码






    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

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

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-2-14 12:32
  • 签到天数: 69 天

    [LV.6]常住居民II

    23

    主题

    276

    回帖

    0

    VC币

    白金会员

    Rank: 12Rank: 12Rank: 12

    积分
    53451
    楚轩 发表于 2020-5-21 22:38:20 | 显示全部楼层
    看不懂 膜拜大佬
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-12-23 15:09
  • 签到天数: 42 天

    [LV.5]常住居民I

    5

    主题

    467

    回帖

    195

    VC币

    星辰大海

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人CD!BD!

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

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-12-23 15:09
  • 签到天数: 42 天

    [LV.5]常住居民I

    5

    主题

    467

    回帖

    195

    VC币

    星辰大海

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

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

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

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人CD!BD!

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

    0517/0524版osc存在bug,等待官方修复
    回复 支持 0 反对 1

    使用道具 举报

    该用户从未签到

    12

    主题

    173

    回帖

    0

    VC币

    注册会员

    Rank: 2

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

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

    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人CD!BD!

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

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

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

    使用道具 举报

    该用户从未签到

    12

    主题

    173

    回帖

    0

    VC币

    注册会员

    Rank: 2

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

    但是使用深色模式不會跟隨系統啊
    回复 支持 0 反对 1

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-12-4 12:48
  • 签到天数: 42 天

    [LV.5]常住居民I

    45

    主题

    2692

    回帖

    2020

    VC币

    星辰大海

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

    积分
    394182

    崭露头角活跃达人CD!BD!

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

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

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

    使用道具 举报

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

    本版积分规则

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