視頻繼續播放,旁邊的配速、心率、海拔和路線也在實時變化。

這些數字看起來只是幾個簡單的圖形。

真正開始做以後,我們才發現,問題遠沒有“把幾個數字放到視頻上”這麼簡單。

因為運動設備記錄的是數據,而 DaVinci Resolve 處理的是時間軸。

如何讓兩者準確地對應起來,才是整個產品真正需要解決的問題。

一切從 FIT 文件開始

Garmin、COROS 等運動設備記錄一次活動時,通常會保存大量結構化運動數據。

FIT 是其中非常重要的一種格式。

一份 FIT 文件里可能包含:

  • 時間
  • GPS 坐標
  • 心率
  • 速度
  • 距離
  • 步頻
  • 功率
  • 海拔
  • 圈段
  • 設備信息

以及大量與具體運動類型有關的數據。

從信息量來說,它非常豐富。

但對於視頻創作者來說,這些數據還不能直接使用。

因為視頻軟件並不知道:

某個 FIT 數據點應該出現在視頻的哪一幀。

這成為整個問題的起點。

兩條完全不同的時間線

運動手錶和攝像機是兩個獨立設備。

手錶可能在 06:31:18 開始記錄。

相機可能在幾分鐘以後才開始拍攝。

中間可能暫停錄像、重新開機、切換鏡頭,甚至同時使用幾台不同的設備。

於是我們面對的是兩條完全不同的時間線:

運動數據時間線

視頻時間線

只有把兩條時間線對齊,運動數據才真正有意義。

假設視頻中的某一幀對應運動記錄里的第 1,427 秒,那麼這一刻應該顯示的心率、配速、位置和海拔,都必須來自這一時間附近的數據。

偏差幾秒,有時候就足以讓畫面變得明顯不自然。

尤其是在快速跑、騎行、爬坡或者比賽中。

數據不是連續的

另一個問題是,FIT 文件並不是視頻。

視頻可能是 30fps 或 60fps,每一秒都有幾十幀。

運動設備的數據採樣卻可能以完全不同的頻率出現。

因此不能簡單地理解成:

“一幀視頻對應一個 FIT 數據點。”

我們需要先把 FIT 中的記錄解析成一條運動數據時間序列,再根據視頻當前所處的時間,找到這一時刻應該呈現的狀態。

這其中會遇到很多現實問題:

數據缺失怎麼辦?

GPS 短暫漂移怎麼辦?

速度突然跳變怎麼辦?

兩個數據點之間應該如何過渡?

暫停運動以後時間軸應該如何處理?

這些細節決定了最後的浮層看起來是“一個會變化的數字”,還是一個真正可以用於視頻製作的工具。

從數據變成視覺

解決時間同步以後,下一步才是大家最終看到的部分:

Gauge。

速度表、心率、路線、海拔、距離、計時器……

每一種 Gauge 本質上都是同一份運動數據的不同表達方式。

但好的運動數據浮層不能只是把數字直接顯示出來。

例如配速從 4:01/km 變成 3:59/km,如果數字每次變化都會造成整個組件左右抖動,視頻里的體驗會非常差。

路線圖需要考慮 GPS 坐標如何映射。

速度表需要考慮數值變化時動畫是否自然。

海拔圖需要考慮當前進度與整條路線之間的關係。

組件還必須能夠適應不同的視頻比例、分辨率和視覺風格。

到了這裡,產品已經不再只是一個 FIT Parser。

它開始變成一個完整的運動數據視覺系統。

為什麼最後選擇 DaVinci Resolve

我們希望這些數據最終進入真正的視頻製作流程。

而不是先生成一個固定的視頻,再讓創作者把它疊到自己的素材上。

對於創作者來說,更自然的方式應該是:

在剪輯過程中決定什麼時候顯示數據、顯示什麼數據、放在哪裡,以及它應該是什麼樣子。

這也是 Resolve Telemetry Overlay 最終圍繞 DaVinci Resolve 工作流設計的原因。

運動數據不應該是剪輯完成之後額外貼上去的一層東西。

它應該成為視頻設計本身的一部分。

看起來簡單的功能,背後通常並不簡單

這也是我們開發這類工具時很有意思的一點。

最終用戶看到的可能只是:

一個心率數字。

一條路線。

一個速度表。

但它們背後經歷的是:

FIT 文件 → 數據解析 → 時間序列 → 時間軸同步 → 數據處理 → Gauge → 視頻畫面

任何一個環節出現問題,最後都會直接反映在畫面里。

而真正好的工具,應該把這些複雜性藏起來。

用戶不需要知道 FIT 文件內部是如何組織的,也不需要理解時間序列如何映射到視頻。

他只需要選擇自己的運動記錄,然後開始創作。

從自己的需求開始

Resolve Telemetry Overlay 的起點其實很簡單。

我們自己製作運動內容,也希望在視頻里更自然地使用運動數據。

當現有工作流不能很好地解決這個問題時,我們決定自己做一個工具。

這也是 LIGHTOUCH 很多產品共同的起點。

先遇到一個真實的問題。

把它解決。

然後再看看,這個解決方案是不是也能幫助其他遇到同樣問題的人。

從一份 FIT 文件,到最終出現在 DaVinci Resolve 時間線上的一個實時心率數字,中間經過了很多用戶不會看到的步驟。

而我們認為,這恰恰是軟件應該做的事情:

把複雜的過程留給工具,把簡單的體驗留給使用它的人。