-
Notifications
You must be signed in to change notification settings - Fork 60
ass_render_difference
MIRIMIRIM edited this page Feb 1, 2024
·
2 revisions
下列主要为测试的一些 libass 与 xySubFilter 等主流 VSFilter 不一致渲染的情况,播放端如何避免或解决问题,以及我(MIR)常用的处理方式
可以与 Differences between Libass and VSFilters 对照阅读
-
\frx
\fry
在 ASS 分辨率(PlayResX
、PlayResY
)与播放视频分辨率不同时的渲染效果此问题通过 headers
LayoutResX / Y
来解决,支援滤镜可以参阅 Differences-between-Libass-and-VSFilters#layoutres -
\p
大于 1 时的缩放效果- 错误:MPC-BE 内置的 VSFilter
- 正确:xy-VSFilter、xySubFilter、VSFilterMod、mpv
- 处理:以正确效果为准
-
bord
shad
blur
的渲染效果- 错误:xySubFilter 等 VSFilter
- 正确:mpv 配置
sub-ass-vsfilter-blur-compat=no
- 处理:影响较小,一般忽略此类标签的效果不同,特殊情况另做分析
-
部分字体的竖排效果,如
\fn@Source Han Sans
- 示例:libass/issues/619
- 错误:所有 VSFilter 系滤镜,应该是 GDI 的问题?目前无法解决
- 正确:所有基于 libass 的字幕滤镜
- 处理:
以 libass 为准,libass 可能后续会改为和 VSFilter 同样的显示效果,但由于这个问题在 Windows 下难以解决,可能会考虑对 VSF 系渲染效果的兼容,同时在竖排时尽量避免如「思源」字体这类变化较大的字体 考虑制作一个转换 fs 的程序辅助
-
fay
的渲染效果- libass 在 0.15.1 中使其与 xy-VSFilter 系保持一致
- 处理:以 xy-VSFilter / libass 0.15.1+ 效果为准
-
缺失字体或字符时的字体 Fallback
- 以简体中文 Windows 10 为例,VSFilter Fallback 到中易宋体,libass Fallback 到微软雅黑,依据系统语言的不同会 Fallback 到不同的默认字体 Fallback 应该是 GDI 和 DWrite 的区别?不确定现在的行为
- 处理:制作时应避免出现字符尤其是特殊字符的缺失,同时希望观看者无论何时都推荐安装或挂载 ASS 中使用的所有相应版本的字体
-
ASS 中颜色的色彩空间
- 最初的 VSFilter 和 r5.2.3 之前的 VSFilterMod 无论何时都只会按照 BT.601 做 YCbCr 和 RGB 之间的颜色转换,xy-VSFilter 在 ASS 头部信息(Script Info)增加了
YCbCr Matrix
以方便按照指定的色彩空间做颜色转换,mpv 使用sub-ass-vsfilter-color-compat=basic
来兼容指定的YCbCr Matrix
,assrender 也做了相应适配 - 处理:ASS 的
YCbCr Matrix
均指定为视频的色彩空间(一般情况下,SD 为 BT.601,HD 为 BT.709)或None
- 最初的 VSFilter 和 r5.2.3 之前的 VSFilterMod 无论何时都只会按照 BT.601 做 YCbCr 和 RGB 之间的颜色转换,xy-VSFilter 在 ASS 头部信息(Script Info)增加了
-
观看 PAR 不为 1:1 的视频时的字幕渲染
- VSFilter 系滤镜、
More - Renderer layout options - Use Original Video Size
的 xySubFilter、sub-ass-vsfilter-aspect-compat=yes
的 mpv、Aegisub 处理字幕时会先按原始视频渲染再按指定的 DAR 拉伸 - 处理:为避免渲染效果问题,不会基于 PAR 不为 1:1 的视频制作字幕,也不建议用 PAR 不为 1:1 的视频观看字幕
- VSFilter 系滤镜、
-
句末全角空格
- VSFilter 系滤镜会忽略该空格,libass 会正常渲染
- 处理:以 libass 为准,删除句末的全角空格