随便聊聊ASS高级字幕与播放器

我们看到的字幕有3种形式:

  1. 独立的字幕文件
  2. 内嵌到视频文件中的字幕
  3. 已经和视频内容本身融为一体

今天要聊的是第一种。
最为常见的字幕是视频底部的文字,但是混二次元年长的人,应该都知道视频字幕有很多花式玩法。比如用字幕排列图形、做动画(虽然现在已经不流行这么玩了)

随便搜一下:

通常来说,使用ASS高级字幕,在本地播放器上也能实现一定程度的字幕花样。但是我一直没怎么玩过。
最近试着学做台湾瑞影、扬声的KTV样式的字幕,发现这玩意还是相当有难度的,并且播放器对ASS的支持也很有差别。

台湾瑞影、扬声的KTV字幕样式

台湾瑞影、扬声的KTV字幕不能说是最为优秀,但是确实非常优秀,当看一段MV时,配上完全相同的样式,特别有感觉。
一些人做的视频,以及音乐播放器,虽然也有KTV歌词样式的功能,但是仔细比较就会发现实际上是有差异的。
总接下来台湾瑞影、扬声的KTV字幕的特征如下:

  1. 显示两行字幕,第一行左下对齐,第二行右下对齐
  2. 一行走字1/4时,刷新下一句歌词
  3. 走字前白字黑边,走字后彩字白边
  4. 女声红字,男声蓝字,合唱绿字(可能不全都如此)
  5. 两行对齐方式分别 为左对齐和右对齐
  6. 在第一句歌词前,使用○○○显示倒计时效果(着色效果是反向的)

如何使用ASS字幕实现这些特效

抱歉我目前还没有研究出来完整的方案。为了避免把别人带坑里,暂时不做解说。
总的来说,很难,暂时做了如下的效果。

链接: 百度网盘 请输入提取码 提取码: 4mzx

视频文件为纯黑屏,音频为音乐acting 逍遥散人/翠花,字幕自己搓的

ASS字幕的兼容问题

我使用aegisub对字幕进行编辑预览时,字幕效果与上图一致;使用另一个字幕工具arctime预览同样正常。然而导入到剪映中时,是这样的:

MPC-BE的默认设置是这样的:

也就是说,不同软件对ASS字幕的支持情况是不同的。特别是在MPC-BE中,甚至因为不同文字叠加,根本不能看。

改善播放器的字幕支持

对MPC-BE来说,非常简单。只需要:

  1. 下载xy-VSFilter
    Releases · Cyberbeing/xy-VSFilter · GitHub
  2. 解压xy-VSFilter,并以管理员权限打开Uninstall_XySubFilter.bat
  3. 在MPC-BE的选项中选择字幕,在字幕渲染器中选择xy-VSFilter,点击确定。然后重新打开播放器即可

使用其他字幕渲染器也有可能可以解决问题,就懒得去测试了。

2 个赞

你工具链和播放端的底层要统一才能理论上显示完全一致。
aegisub如果用的是libass后端,那么播放端也要用libass做字幕渲染的后端。
libass的参考播放器的标杆实现是mpv,所有效果以mpv为准。
directshow有人做移植实现 GitHub - Masaiki/xy-VSFilter: xy-VSFilter variant with libass backend

顺带一提,内嵌字幕是指压制时把字幕渲染进帧,所以你的第二点正确说法是 内挂字幕 或者 内封字幕 ,你的第三点才是 内嵌字幕 。

4 个赞

你说的对,但是我也不全支持。

工具终究是针对标准而制作的。对ass字幕格式来说,尤其是一个多年未更新的aegisub来说,并不存在格式更新的问题。就目前而言,GitHub - Cyberbeing/xy-VSFilter: Official xy-VSFilter Repository 和 aegisub的预览我并没有发现明显差别,到底有没有其他特效实现效果的明显差别呢?我不好说。
当然了, 我看了下 GitHub - Masaiki/xy-VSFilter: xy-VSFilter variant with libass backend 是最近还在更新维护,而前者已经停止更新很久了。

我只阐述额外的事实,我不是字幕组只折腾播放端遇到的问题,上面的描述也是来自字幕论坛的反馈,你可以自行考究。

  1. 字幕组用的aegisub不是什么多年未更新, GitHub - wangqr/Aegisub: Win64 nightly builds available at GHA artifact, also at following link: 是它们的现用工具
  2. 播放端用的xyfilter一直有人接手开发 GitHub - pinterf/xy-VSFilter: xy-VSFilter

当然如果你不认可接手开发这种事属于原版软件,那么以上两点对你不适用。

  1. 现在的ass是个混沌的标准,因为最初生产这个标准的人/组织早就g了,标准早就分裂,为什么我首选libass因为它足够流行和便于多端统一

题外话,aegisub因为主开发人员的长期不活跃,实际上已经裂开多个分支了 GitHub - arch1t3cht/Aegisub: Cross-platform advanced subtitle editor, with new feature branches. Read the README on the feature branch. ,wangqr只是其中最大的一个。去年有人计划合并分支,但目前来看积重过多难以进行下去 Release new stable (3.4.0) · Issue #214 · Aegisub/Aegisub · GitHub

1 个赞

谢谢你的信息,我确实更倾向于使用原版的稳定版,后边会试试这几个项目其他人维护的分支。

能不能讲讲
GitHub - pinterf/xy-VSFilter: xy-VSFilterGitHub - Masaiki/xy-VSFilter: xy-VSFilter variant with libass backend 又有何优劣呢?前者是基于原版的维护,后者是引入了libass?

pf专注于旧版vsfilter的bug修复。
masaiki的xysub使用libass后端渲染ass/ssa(其它字幕格式依旧使用vsfilter后端),但是支持一键切换成旧版vsfilter后端

性能上masaiki渲染复杂ass特效的效率远高于旧版vsfilter。

P.S. vsfilter还有个大分支 GitHub - sorayuki/VSFilterMod: VSFilterMod with VapourSynth interface added ,被许多特效字幕组采用,由于缺乏成熟的播放滤镜,通常被内嵌入视频。(当然也存在做成外挂字幕丧心病狂的例子,一个文本字幕档十几兆甚至几十兆,实时渲染的时候cpu几乎顶格跑)

3 个赞