目录
- 上下文
- 最小工作示例:在 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