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 中找到這些值的額外解釋。