使用 WebVTT 在 YouTube 上定位字幕

Has*_*him 3 youtube video subtitle webvtt

根据 YouTube 的字幕格式文档,它支持使用 W3C 的 WebVTT 格式定位字幕,这似乎已得到证实:我看过的大多数视频都使用定位 - 包括这个测试视频此音乐视频- 使用 WebVTT 来执行此操作。

\n

我能够align:start position:100%成功地将字幕对齐到视频视口的右侧,但我尝试的任何变体align-left都会align-end简单地恢复为默认(中心)对齐。

\n

line-leftW3C WebVTT 规范中示例 7 的语法指出:

\n
\n

“左线”或“右线”仅指应用“位置”设置的框的物理侧,其方式与提示的水平或垂直方向无关。它不影响或涉及文本本身在框中的方向或位置。

\n
\n

但是当我尝试使用它来显式指定左对齐时,我在上传文件时收到来自 YouTube 的错误(第 17 行指的是第三个提示 - 实际错误是第line-left18 行):

\n

在此输入图像描述

\n
WEBVTT\nKind: captions\nLanguage: en\n\n1\n00:00:16.439 --> 00:00:20.998 align:start position:100%    // Successfully aligns right\n\xd9\x85\xdb\x8c\xd8\xb1\xdb\x92 \xda\xa9\xd9\x86\xd9\x91\xd8\xa7\xda\xba \xd8\xaf\xdb\x92 \xda\x86\xd9\x85\xda\xa9\xd9\x86 \xd8\xac\xda\xbe\xd9\x85\xda\xa9\xdb\x92\nMere kannaan de chamkan jhumke\nSparkling jewels adorn my ears\n\n2\n00:00:21.038 --> 00:00:25.037 align:left position:0%       // Silently fails; falls back to centre alignment\n\xd9\x85\xdb\x8c\xd8\xb1\xdb\x92 \xda\xa9\xd9\x86\xd9\x91\xd8\xa7\xda\xba \xd8\xaf\xdb\x92 \xda\x86\xd9\x85\xda\xa9\xd9\x86 \xd8\xac\xda\xbe\xd9\x85\xda\xa9\xdb\x92\nMere kannaan de chamkan jhumke\nSparkling jewels adorn my ears\n\n3\n00:00:25.837 --> 00:00:30.037 align:left position:0%,line-left      // Fails with errors\n\xd9\x85\xdb\x8c\xd9\x86\xd9\x88\xda\xba \xd9\x88\xdb\x8c\xda\xa9\xda\xbe\xdb\x92 \xdb\x81\xd9\x88\xd8\xa7 \xd9\x88\xdb\x8c \xd9\xbe\xd8\xa6\xdb\x8c \xda\xaf\xda\xbe\xd9\x85 \xda\xa9\xdb\x92 \nMainoon wekhe hawa wi pai ghum ke\nEven the breeze turns around to get a glimpse of me\n
Run Code Online (Sandbox Code Playgroud)\n

YouTube 根本不支持/语法,还是我只是用错了它line-leftline-right如果不是,我怎样才能强制我的字幕左对齐?

\n

请注意,虽然我有旁遮普语中每个提示的第一行,但视频的字幕文件本身上传为,并且文件开头的标签English (United Kingdom)也明确表明了这一点,因此这不是正确的-Language: en左边的问题。

\n

Has*_*him 5

我发布这个答案纯粹是为了记录我用来实现定位工作的内容,但我很高兴接受任何比我更擅长弄清楚规格说明的人的答案,并且这样做可以准确解释定位如何在 WebVTT 中有效。

自从第一次写这个问题以来,经过大量阅读规范并对其进行测试后,我成功地偶然发现了解决此问题所需的正确代码排列,但有一些警告。

大多数情况下,您可以使用:

<timecode> align:left position:0% size:50%左对齐标题

<timecode> align:right position:100% size:50%将它们右对齐

<timecode> line:0%将它们放置在视频的顶部

...至少在我的具体情况下。然而,这种方法似乎在较长的线路上完全失败,线路会退回到中心对齐。

我也不明白为什么,但size我的视频中的指令总是需要在 50% 左右:将其设置为太低或太高的值 - 包括 100%,就像 CSS 中的情况 - 似乎也会失败。