首页 > 解决方案 > 使用 WebVTT 在 YouTube 上定位字幕

问题描述

根据 YouTube关于字幕格式的文档,它支持使用 W3C 的 WebVTT 格式定位字幕,这似乎在野外得到了证明:我看过的大多数使用定位的视频——包括这个测试视频这个音乐视频——都使用 WebVTT这样做。

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

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

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

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

在此处输入图像描述

WEBVTT
Kind: captions
Language: en

1
00:00:16.439 --> 00:00:20.998 align:start position:100%    // Successfully aligns right
میرے کنّاں دے چمکن جھمکے
Mere kannaan de chamkan jhumke
Sparkling jewels adorn my ears

2
00:00:21.038 --> 00:00:25.037 align:left position:0%       // Silently fails; falls back to centre alignment
میرے کنّاں دے چمکن جھمکے
Mere kannaan de chamkan jhumke
Sparkling jewels adorn my ears

3
00:00:25.837 --> 00:00:30.037 align:left position:0%,line-left      // Fails with errors
مینوں ویکھے ہوا وی پئی گھم کے 
Mainoon wekhe hawa wi pai ghum ke
Even the breeze turns around to get a glimpse of me

YouTube 根本不支持line-left/line-right语法,还是我用错了?如果不是,我该如何强制我的字幕左对齐?

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

标签: videoyoutubesubtitlewebvtt

解决方案


我发布这个答案纯粹是为了记录我用来使定位工作的内容,但我很乐意接受任何比我更善于弄清楚规格所说的人的答案,这样做可以准确解释定位的方式在 WebVTT 中工作。

自从第一次写这个问题,并且在大量阅读规范和测试之后,我设法偶然发现了解决这个问题所需的正确代码排列,但有一些警告。

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

<timecode> align:left position:0% size:50%左对齐字幕

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

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

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

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


推荐阅读