將影片時間碼對映到 IMSC

將影片軌道或影片編輯器時間軸中看到的時間或時間碼值對映到 IMSC 文件可能有點棘手。有幾個不同的問題需要您注意,我們將在本文中介紹。

考慮時間碼開始時間

為了簡單起見,我們將假設我們的影片素材中的時間碼軌道從 00:00:00:00 開始。預設情況下,IMSC 文件中的值從 0 開始並自動遞增。

如果影片軌道中的時間碼不是從 00:00:00:00 開始,您將不得不取影片軌道中的第一個時間戳,並對該值和所有後續值執行計算,以便初始值為 00:00:00:00。例如,如果影片軌道中的第一個時間碼值為 00:59:50:00,那麼您必須從影片軌道中的所有時間碼值中減去 00:59:50:00,以便將其與 IMSC 文件同步。

幀速率

當您使用整數幀速率(例如 24fps、25fps 和 30fps)時,將 IMSC 文件對映到影片素材非常直接。您時間軸中的值將與 IMSC 文件中的值相同。然而,當您使用小數幀速率(例如 23.976fps 或 29.97fps)時,情況會變得更復雜一些。

幀速率實際上描述了每秒的幀數和這些幀的速度

  • 25fps 表示每秒有 25 幀(0-24),並且這些幀的播放速度與即時時鐘相同。
  • 24fps 表示每秒有 24 幀(0-23),並且這些幀的播放速度與即時時鐘相同。
  • 23.976fps 是事情變得奇怪的地方。與 24fps 類似,它表示每秒有 24 幀(0-23)。然而,與 24fps 不同的是,這 24 幀的播放速度比即時時鐘稍慢。正如幀速率數字(23.976fps)所暗示的那樣,在一秒的實際時間內,您幾乎可以看到 24 幀。24 幀以 23.976fps 播放實際上需要 1.001 秒才能顯示。

在一秒鐘內,這不成問題。然而,當您擴充套件到幾分鐘時,24fps 和 23.976fps 之間已經會有幾幀的差異。當您擴充套件到一個小時時,它們將相差 3.6 秒。以下是一些數學計算來說明這一點

01:00:00:00 @ 24fps

3600 (1 小時的秒數) * 1.000 (速度) = 3600 實際秒數

01:00:00:00 @ 23.976fps

3600 (1 小時的秒數) * 1.001 (速度) = 3603.6 實際秒數

這一點對於理解 IMSC 檔案尤其重要,因為文件中的所有時序都代表實際時間值。例如,如果您想描述一個與 23.976fps 影片同步的事件,該影片在影片中從 01:00:00:00 時間碼開始,並在 1 秒後結束,它看起來會是這樣的

<p begin="3603.6s" end="3604.6s">你好,我是來自奧剋星的摩克</p>

這其中重要的啟示是,如果您正在將具有小數幀速率的影片與 IMSC 文件同步,則時序將不匹配。IMSC 文件中的時序將與影片時序越來越遠。

減輕此問題

也就是說,在 IMSC 檔案中描述時間表達式值實際上有一種不同的方法,可以解決這個問題。如IMSC 中的時序指南中所述,使用幀的時間表達式語法將在 IMSC 檔案中的幀號和媒體素材中的幀號之間提供 1:1 的對應關係。

使用幀方法必須包含的兩個屬性是 frameRateframeRateMultiplier。幀速率描述了每秒有多少幀,而乘數應用於 frameRate 來描述實際幀速率(以實際秒為單位)。要描述 23.976fps 的幀速率,將使用以下值

xml
<tt ttp:frameRate="24" ttp:frameRateMultiplier="1000 1001">
  …
</tt>

這意味著每秒有 24 幀,並且這些幀的播放速度為每實際秒 23.976 幀(24 * (1000 / 1001))。

透過描述此實際幀速率,您現在可以以幀(或 f)為單位描述時間表達式。這是事件開始和結束的實際幀號。這是與上面相同的示例,其中事件在 01:00:00:00 開始,並在 1 秒後結束。