IMSC 中的计时
构建 IMSC 文档时,每个定义的文本片段都必须包含计时信息,以指定其显示时间。有多种方法可以描述字幕的开始和停止显示时间,每种方法都有其优缺点。本文将解释这些不同的方法。
如果您还没有阅读 IMSC 基础知识文章中的 IMSC 文档的计时部分,现在应该阅读它,然后再返回此处 — 它包含有关如何描述计时事件的初步概述。
描述计时信息的方式
在 IMSC 文档中,有三种主要方式可以描述时间表达式的值。
秒.小数
<p begin="1s" end="2s">Hello, I am Mork from Ork</p>
这种描述 IMSC 文档中 begin 和 end 值的方法非常简单 — 只需在数字后附加“s”(秒)。它不需要用户声明相应媒体的帧率。这些值必须映射到文本所同步的视频帧。小数部分总是向上舍入到最接近的视频帧。
时:分:秒.小数
<p begin="00:00:01.00" end="00:00:02.00">Hello, I am Mork from Ork</p>
这种描述 IMSC 文档中 begin 和 end 值的方法与使用秒数本质上是相同的,只是您将这些值表示为小时、分钟和秒。这使您可以轻松设置更长、更精确的时间。
帧
<tt xmlns="http://www.w3.org/ns/ttml"
xml:lang="en"
ttp:frameRate="24"
ttp:frameRateMultiplier="1000 1001">
<body>
<div>
<p begin="24f" end="48f">Hello, I am Mork from Ork</p>
</div>
</body>
</tt>
此方法要求在 IMSC 文档的根元素中声明 frameRate 和 frameRateMultiplier 属性。帧率描述一秒钟视频中有多少帧。乘数应用于 frameRate,以声明一秒视频与一实时秒的比较方式。
让我们稍微详细地解释一下。
frameRateMultiplier 源于非整数帧率(如 23.98fps,与整数帧率 24fps 相反)相关的问题。24fps 意味着视频的每一秒都有 24 帧,并且这一秒与实时秒相同。23.98fps 意味着视频的每一秒有 24 帧,并且这一秒比实时秒稍长。frameRateMultiplier 定义了与实时相比的每一帧的持续时间。
想象一下您有一个秒表,并在观看电影时计时。如果电影以 24fps 的速度播放,一旦您的媒体播放器显示您已观看满 1 小时,您的秒表将显示 01:00:00.00。现在,如果电影以 23.98fps 的速度播放,一旦您的媒体播放器显示您已观看满 1 小时,您的秒表将显示 01:00:03.6(1 小时 × (24/23.98))。
明白了吗?
要描述 23.976fps 的帧率,将使用以下 frameRate 和 frameRateMultiplier 值
<tt xmlns="http://www.w3.org/ns/ttml"
xml:lang="en"
ttp:frameRate="24"
ttp:frameRateMultiplier="1000 1001">
这实际上意味着每秒 24 帧应该以 (24 * (1000/1001)) 或 23.98fps 的速度播放。
现在已经声明了 23.98 的帧率,您就可以使用帧(f)来描述时间表达式了。
<p begin="24f" end="48f">Hello, I am Mork from Ork</p>
使用此方法的优点是,时间表达式的帧号与媒体素材的帧号相同。86400f 的值对应于视频文件中的第 86400 帧。
注意:您可以在 将视频时间码映射到 IMSC 中找到这些值的额外解释。