使用 WebVTT 在 YouTube 上定位字幕

问题描述

根据 YouTube 的 documentation on subtitle formats,它支持 W3C 的 WebVTT 格式的定位字幕,这似乎在野外得到了证明:我见过的大多数视频都使用定位 - 包括 this test video 和 { {3}} - 使用 WebVTT 执行此操作。

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

W3C 的 my video here 中示例 7 中的 line-left 语法指出:

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

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

enter image description here

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),这也通过 Language: en 标签明确在文件的开头,所以这不像是从右到左的问题。

解决方法

我发布这个答案纯粹是为了记录我曾经让定位工作的内容,但我很乐意接受任何比我更擅长弄清楚规范所说和所做的人的答案所以可以准确解释 WebVTT 中的定位是如何工作的。

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

大多数情况下:

align:left position:0% size:50% 用于左对齐字幕

align:right position:100% size:50% 用于将它们右对齐

...至少在我的特殊情况下。然而,这种方法似乎在较长的线上完全失败,而后者又回到了居中对齐的状态。

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...