ASS/SSA 字幕样式渲染
ASS/SSA Subtitle Style render
我需要解析“.ass”格式的字幕样式。现在我有一个用于 ass 字幕的自定义解析器,并使用 CaptionStyleCompat
进行样式更改。
但是,当我同时有两个标题时,样式会附加到它们两个上。有没有办法为每个提示附加样式?
示例:
应该是这样的:
实际显示方式:
解决方法很简单:
- 将 ExoPlayer 库作为模块导入到您的项目中 (guide)
- 转到
com.google.android.exoplayer2.text.Cue
并添加 CaptionStyleCompat
变量
- 转到
com.google.android.exoplayer2.ui.CanvasSubtitleOutput
并将 painter.draw
调用更改为如下所示:
painter.draw(
cue,
cue.style, //This line exactly
defaultViewTextSizePx,
cueTextSizePx,
bottomPaddingFraction,
canvas,
left,
top,
right,
bottom);
- 更改
TextOutput
界面以更改提示的样式。例如:
newCue = newCue.buildUpon().setStyle(captionStyleCompat).build();
cues.set(cues.indexOf(cue), newCue);
不要忘记为玩家设置提示:
playerView.getSubtitleView().onCues(cues);
我需要解析“.ass”格式的字幕样式。现在我有一个用于 ass 字幕的自定义解析器,并使用 CaptionStyleCompat
进行样式更改。
但是,当我同时有两个标题时,样式会附加到它们两个上。有没有办法为每个提示附加样式?
示例:
应该是这样的:
实际显示方式:
解决方法很简单:
- 将 ExoPlayer 库作为模块导入到您的项目中 (guide)
- 转到
com.google.android.exoplayer2.text.Cue
并添加CaptionStyleCompat
变量 - 转到
com.google.android.exoplayer2.ui.CanvasSubtitleOutput
并将painter.draw
调用更改为如下所示:
painter.draw(
cue,
cue.style, //This line exactly
defaultViewTextSizePx,
cueTextSizePx,
bottomPaddingFraction,
canvas,
left,
top,
right,
bottom);
- 更改
TextOutput
界面以更改提示的样式。例如:
newCue = newCue.buildUpon().setStyle(captionStyleCompat).build();
cues.set(cues.indexOf(cue), newCue);
不要忘记为玩家设置提示:
playerView.getSubtitleView().onCues(cues);