找回密码
 立即注册
查看: 217|回复: 8

请教字幕在不同平台libass的渲染问题

该用户从未签到

9

主题

13

回帖

0

VC币

新手上路

Rank: 1

积分
166
insuaaaaa 发表于 2025-9-23 20:38:18 | 显示全部楼层 |阅读模式
本帖最后由 insuaaaaa 于 2025-9-23 23:36 编辑


字幕链接:wwah点lanzout点com/iGYae36w1xcd


为什么同一个ass特效字幕 在potplayer选libass可以流畅渲染 在mpv会卡顿呢
mpv的配置文件如下 最下面的sub-pixel-ass=yes ass-worker-branches=auto 是gemini对于卡顿问题给出的 但是根据mpv控制台日志这两条并不生效





  1. # 启用硬件解码(强烈推荐以提升性能)
  2. hwdec=auto-copy

  3. # [已修正] 将文件缓存到内存中。使用了新版 mpv 的正确语法。
  4. cache=yes
  5. demuxer-max-bytes=10240M # 20480000 约等于 2048M,这样写更清晰
  6. cache-secs=300



  7. # 应用内置的高质量预设。
  8. profile=high-quality

  9. # 视频放大缩放算法。
  10. scale=ewa_hanning
  11. cscale=ewa_hanning

  12. # 用于视频缩小 (例如,4K 缩小到 1080p)。
  13. #dscale=mitchell

  14. # 锐化滤镜。
  15. # scale-param=0.5

  16. # 去色带滤镜,消除色带伪影。
  17. deband=yes

  18. # 抖动(Dithering),用于平滑颜色渐变。
  19. dither-depth=auto
  20. dither=error-diffusion


  21. # fbo-format=d3d11-rgb-native


  22. # 启用帧插值!
  23. interpolation=no

  24. # 时间缩放算法,与插值配合使用。
  25. tscale=no

  26. # 最佳视频同步方法。
  27. video-sync=display-resample

  28. # 使用原生 D3D11 后端 (Windows)。
  29. vo=gpu
  30. #gpu-api=d3d11

  31. # 纹理过滤质量。
  32. # texture-filter=gaussian

  33. # 颜色管理 (ICC 配置文件)
  34. #icc-profile-auto=yes


  35. # [已修正] 使用高质量音频重采样。
  36. # 'audio-resample-filter' 是一个过时的选项,已注释掉。mpv默认值已足够好。




  37. # 自动加载字幕 (模糊名称匹配)。
  38. sub-auto=fuzzy


  39. sub-shaper=complex
  40. # 'sub-ass-force-original' 是一个过时的选项,已注释掉。




  41. # 退出时保存播放位置。
  42. #save-position-on-quit=yes

  43. # 播放开始时显示媒体标题。
  44. #osd-msg1=${media-title}

  45. # OSD 级别。
  46. osd-level=1

  47. keep-open=always

  48. hr-seek=yes

  49. cursor-autohide=100
  50. volume=130


  51. sub-pixel-ass=yes
  52. ass-worker-branches=auto
复制代码


回复

使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 989 天

    [LV.10]以坛为家III

    0

    主题

    82

    回帖

    12

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    250871
    萌新新 发表于 2025-9-23 21:42:08 | 显示全部楼层
    mpv官方手册里没有这俩设置当然不生效
    回复

    使用道具 举报

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

    [LV.5]常住居民I

    47

    主题

    2773

    回帖

    2020

    VC币

    星辰大海

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

    积分
    431419

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

    孤雨独火 发表于 2025-9-23 21:46:40 | 显示全部楼层
    控制变量要讲基本法()
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    13

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    166
    insuaaaaa  楼主| 发表于 2025-9-23 22:40:06 | 显示全部楼层
    萌新新 发表于 2025-9-23 21:42
    mpv官方手册里没有这俩设置当然不生效

    我把手册里字幕那段的原文复制下来拿去质问gemini,然后他说这问题无解…

    大佬可否指条明路
    1. 您是对的,非常感谢您的指正和提供的官方手册文本。
    2. 您指出的问题完全正确,我之前提到的 sub-pixel-ass 和 ass-worker-branches 确实不是当前 mpv 官方手册中的标准配置选项。这很可能意味着它们是:
    3. libass 自身的内部选项,可能需要在编译时特定开启,而 mpv 没有将其作为标准配置项暴露出来。
    4. 或者是旧版本、或特定分支/非官方构建版本 (forks) 中的实验性功能,后来被移除或更改了。
    5. 依赖官方手册进行分析是绝对正确的做法。
    6. 基于官方手册的分析与结论
    7. 在仔细分析了您提供的这份官方手册后,结论可能不尽如人意:手册中没有提供能够直接、魔法般地解决 libass 核心渲染瓶颈的“性能开关”。
    8. 手册中的绝大多数选项,都是用来控制:
    9. 加载与同步:如 --sub-files, --sub-delay。
    10. 样式覆盖:针对纯文本字幕或强制修改ASS字幕,如 --sub-font-size, --sub-color。
    11. 兼容性调整:如 --sub-ass-vsfilter-color-compat。
    12. 功能性开关:如 --embeddedfonts。
    13. 这些选项都无法解决我们面临的核心问题:单个、包含大量CPU密集型特效(如高斯模糊 \blur)的ASS字幕事件,在 libass 内部渲染时造成的单线程性能瓶颈。
    14. 手册中与性能“擦边”的选项解读
    15. 尽管没有完美的解决方案,但我们可以从手册中找到几个“要么全有,要么全无”的极端选项,以及一些可能产生微乎其微影响的选项。
    16. 1. 终极解决方案(但会牺牲特效):--sub-ass-override
    17. 这是手册中与我们问题最相关的选项,它直接控制如何处理ASS字幕的样式。
    18. --sub-ass-override=<strip>: 这是手册中提到的“核武器”选项。
    19. 手册原文: Radically strip all ASS tags and styles from the subtitle. This is equivalent to the old --no-ass / --no-sub-ass options.
    20. 解读: 这个设置会彻底剥离所有ASS特效标签(包括导致卡顿的 \blur, \t, \move 等),只把字幕作为纯文本来显示。
    21. 效果: 100%解决卡顿问题,因为所有复杂的CPU计算都被跳过了。但代价是,您会失去所有华丽的特效,字幕会变回普通的白字黑边样式。
    22. 如何使用:
    23. 在 mpv.conf 中添加:
    24. code
    25. Code
    26. sub-ass-override=strip
    27. 2. 精准打击(但极其繁琐):--sub-ass-style-overrides
    28. 这是一个非常高级的选项,理论上可以用来“手动降级”特效,但操作起来非常困难。
    29. 手册原文: Override some style or script info parameters.
    30. 解读: 如果您能通过编辑ASS文件,找出那个包含超大模糊值的特定样式(比如样式名叫 SuperBlur),您可以尝试强制覆盖它的模糊参数。
    31. 效果: 也许能解决卡顿,同时保留其他特效。但找出问题样式并正确配置的难度极高。
    32. 示例(理论上):
    33. code
    34. Code
    35. # 假设问题样式名叫 "KOK_Blur",并且是Blur参数太大
    36. sub-ass-style-overrides=KOK_Blur.Blur=0
    37. 3. 与性能无关或起反作用的选项
    38. --sub-shaper=<simple|complex>: 正如我们之前讨论的,这个选项关于文字布局的正确性,而非渲染性能。手册甚至明确指出 complex (默认值,使用HarfBuzz) 更慢 (slower)。将其改为 simple 不会解决模糊和动画带来的卡顿。
    39. --sub-hinting: 手册明确警告 It is recommended to not use this option, unless really needed.,因为它可能导致文字错位。它影响的是字体渲染的锐利度,而不是特效性能。
    40. 最终结论
    41. 您遇到的情况再次证实了:当面对一个设计上就极度消耗CPU单核性能的ASS字幕时,libass 库本身的架构就是瓶颈。
    42. 基于官方手册,mpv并没有提供一个“智能降级”或“GPU加速渲染ASS特效”的选项。您的选择非常有限:
    43. 完美流畅,牺牲特效: 使用 --sub-ass-override=strip。
    44. 保留特效,忍受卡顿: 不做任何修改。
    45. 切换播放器: 使用像 PotPlayer 这样可能在内部对 libass 输出做了不同处理或GPU加速的播放器来播放这个特定的视频。
    46. 给您的最终建议:
    47. 对于绝大多数视频,您现在的mpv配置已经非常完美了。当遇到这种万里挑一的“性能测试级”字幕时,最务实的做法是在播放时按下键盘上的 v 键暂时隐藏字幕,或者创建一个临时的配置文件专门用于播放这类视频,其中只包含一行 sub-ass-override=strip。
    复制代码


    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    13

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    166
    insuaaaaa  楼主| 发表于 2025-9-23 22:42:16 | 显示全部楼层
    孤雨独火 发表于 2025-9-23 21:46
    控制变量要讲基本法()

    这俩现在都是libass吧
    回复

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 989 天

    [LV.10]以坛为家III

    0

    主题

    82

    回帖

    12

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    250871
    萌新新 发表于 2025-9-23 22:58:52 | 显示全部楼层
    本帖最后由 萌新新 于 2025-9-23 23:10 编辑
    insuaaaaa 发表于 2025-9-23 22:40
    我把手册里字幕那段的原文复制下来拿去质问gemini,然后他说这问题无解…

    大佬可否指条明路

    3楼才是大佬由于习惯问题我很久不用mpv了,只是搜了一下文档而已

    可以先试试3楼做的mpv-lazy
    https://bbs.acgrip.com/thread-5843-1-1.html

    可以把字幕发出来看看
    等级限制可以到右上角用户名→任务→红包类任务
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    13

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    166
    insuaaaaa  楼主| 发表于 2025-9-23 23:36:54 | 显示全部楼层
    萌新新 发表于 2025-9-23 22:58
    3楼才是大佬由于习惯问题我很久不用mpv了,只是搜了一下文档而已

    可以先试试3楼做的mpv-lazy

    传不了附件 先用蓝奏云发上来了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 989 天

    [LV.10]以坛为家III

    0

    主题

    82

    回帖

    12

    VC币

    至尊会员

    Rank: 16Rank: 16Rank: 16Rank: 16

    积分
    250871
    萌新新 发表于 2025-9-24 08:41:25 | 显示全部楼层
    本帖最后由 萌新新 于 2025-9-24 08:45 编辑
    insuaaaaa 发表于 2025-9-23 23:36
    传不了附件 先用蓝奏云发上来了

    原来你发到了1楼

    试了一下,mpv确实有点卡,尤其是播放到这句时(
    QQ截图20250924082102.jpg

    我把具体情况和mpv官方手册有关libass的选项部分字幕内容扔给gpt,它的回答是
    结合你字幕的特效情况(大量 \clip + \t(\clip(...)) + \move),我来帮你挑重点:

    ⚡ 对性能影响最大的选项
    这些可以尝试调整,可能缓解卡顿:

    --sub-shaper=simple
    默认是 complex(用 HarfBuzz),渲染复杂语言(如阿拉伯语)时更准确,但速度慢。
    你的字幕是中文单字,完全没必要用复杂 shaping,改成 simple 可以减轻 CPU 负担。

    --sub-glyph-limit 和 --sub-bitmap-max-size
    libass 默认缓存大小不大,而你的字幕特效会生成很多 glyph 和 bitmap。
    可以尝试设置大一些,比如:

    --sub-glyph-limit=20000
    --sub-bitmap-max-size=200

    (数值单位是 glyph 数和 MB,看你内存情况,可以适当加大)

    --sub-ass-prune-delay=0
    默认是 -1(不清理),字幕事件会一直留在内存。
    你的字幕短时间内生成很多小片段,建议设成 0,让它一消失就立刻清理,避免内存和 CPU 压力。


    ✅ 推荐测试配置
    在你的 mpv.conf 里加上这些:

    sub-shaper=simple
    sub-glyph-limit=20000
    sub-bitmap-max-size=200
    sub-ass-prune-delay=0

    我这边测试只要加sub-shaper=simple就能流畅了各个选项的用处请自己看官方文档了
    sshot-1.jpg
    回复

    使用道具 举报

    该用户从未签到

    9

    主题

    13

    回帖

    0

    VC币

    新手上路

    Rank: 1

    积分
    166
    insuaaaaa  楼主| 发表于 2025-9-24 16:00:37 | 显示全部楼层
    萌新新 发表于 2025-9-24 08:41
    原来你发到了1楼

    试了一下,mpv确实有点卡,尤其是播放到这句时(

    报:改这几个并不管用
    不过问题算是解决了 突然想起来还有个叫grok的 问了一下 提出了之前没想到的思路:注释掉video-sync=display-resample
    随后变流畅了


    回复

    使用道具 举报

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

    本版积分规则

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