ASS/SSA 字幕样式渲染

ASS/SSA Subtitle Style render

我需要解析“.ass”格式的字幕样式。现在我有一个用于 ass 字幕的自定义解析器,并使用 CaptionStyleCompat 进行样式更改。

但是,当我同时有两个标题时,样式会附加到它们两个上。有没有办法为每个提示附加样式?

示例:

应该是这样的:

实际显示方式:

解决方法很简单:

  1. 将 ExoPlayer 库作为模块导入到您的项目中 (guide)
  2. 转到 com.google.android.exoplayer2.text.Cue 并添加 CaptionStyleCompat 变量
  3. 转到 com.google.android.exoplayer2.ui.CanvasSubtitleOutput 并将 painter.draw 调用更改为如下所示:
painter.draw(
         cue,
         cue.style, //This line exactly
         defaultViewTextSizePx,
         cueTextSizePx,
         bottomPaddingFraction,
         canvas,
         left,
         top,
         right,
         bottom);
  1. 更改TextOutput界面以更改提示的样式。例如:
newCue = newCue.buildUpon().setStyle(captionStyleCompat).build();
cues.set(cues.indexOf(cue), newCue);

不要忘记为玩家设置提示:

playerView.getSubtitleView().onCues(cues);