目录

目录

目录

  • 上下文
  • 最小工作示例:在 VTT 文件中为字幕加下划线
  • 最小工作示例:在 ASS 文件中为字幕添加下划线
  • 尝试在 VTT 文件中添加样式

上下文

我用ffmpeg它来将字幕刻录到视频中。字幕中的某些行带有下划线,我希望能够更改字幕下划线与字幕内容之间的间距。

我知道如何在 VTT 和 ASS 字幕中加下划线(请参阅下面的最小工作示例)。我找到了关于这两种文件格式的文档(参见 VTT 规范中的相关部分Aegis 官方网站上有关 ASS 标签的文档),但没有一个提到下划线与字幕内容的分离。

值得一提的是,CSS 规则可以在 VTT 文件中指定(查看官方文档)。因此,可以使用 CSS 属性文本下划线偏移来控制间距。但是,ffmpeg 似乎无法解释它们,请参阅下面的“尝试向 VTT 文件添加样式并刻录字幕”部分。

我的问题是:是否可以在 ASS 文件或 VTT 文件中定义下划线和字幕之间的分隔?如果不行,我可以使用什么替代方法使用 ffmpeg 实现相同的结果?

最小工作示例:在 VTT 文件中为字幕加下划线

WEBVTT

00:00:00.000 --> 00:00:01.000
A subtitle in a VTT file with <u>underline</u>

00:00:01.000 --> 00:00:02.000
A subtitle in a VTT file without underline
ffmpeg -v error -y \ 
       -f lavfi -i testsrc=size=300x300 -t 2 \
       -vf "subtitles=my-subtitles.vtt" \
       output.avi

在此处输入图片描述

最小工作示例:在 ASS 文件中为字幕添加下划线

[Script Info]
ScriptType: v4.00+

[Events]
Format: Start, End, Text
Dialogue: 00:00:00.00, 00:00:01.00, A subtitle in a ASS file with {\u1}underline{\u0}
Dialogue: 00:00:01.00, 00:00:02.00, A subtitle in a ASS file without underline
ffmpeg -v error -y \
       -f lavfi -i testsrc=size=300x300 -t 2 \
       -vf "subtitles=my-subtitles.ass" \
       output.avi

在此处输入图片描述

尝试为 VTT 文件添加样式并刻录字幕

我发现ffmpeg 官方网站上有一个关于 ffmpeg 无法读取 STYLE 标签的帖子。用户报告说无法读取 VTT 文件中定义的样式。我在我的电脑上试过了,但仍然不起作用,所以看来 ffmpeg 无法解析定义 CSS 样式的行(我使用的 ffmpeg 版本是 v6.0)。

WEBVTT

::cue(.white){ color: white; }

1
00:00:00.000 --> 00:00:01.000 line:77% position:50% align:middle
<c.white>Hello World</c>
ffmpeg -v error -y \
       -f lavfi -i testsrc=size=300x300 -t 2 \
       -vf "subtitles=my-subtitles.vtt" \
       output.avi

相关内容