錄製和播放簡介

平台專屬指南

絕大多數擴增實境體驗都是「即時處理」。使用者必須在特定時間位於特定地點,手機則以特殊 AR 模式開啟,並開啟 AR 應用程式。舉例來說,如果使用者想知道 AR 沙發在客廳中的樣子,當他們人在房間時,就必須將沙發「放在」螢幕上。

錄製和播放 API 不受這項「即時」規範的影響,因此,你可以打造能隨時隨地觀看的 AR 體驗。Recording API 會儲存攝影機的影片串流、IMU 資料,或是你選擇儲存在 MP4 檔案中的任何其他自訂中繼資料。接著,您可以透過 Playback API 將這些錄製的影片提供給 ARCore,該 API 會將 MP4 視為即時工作階段動態饋給。您還是可以使用即時相機工作階段,但有了這個新 API,AR 應用程式就能選擇使用預先錄製的 MP4 檔案,而非即時工作階段。

使用者也可以利用這項功能。無論身在何處,教師都可以從原生圖片庫擷取任何使用 Recording and Playback API 錄製的影片,然後編輯或播放 AR 物件、特效和濾鏡。這項功能可讓使用者在搭火車通勤上班,或是在床上悠閒地玩 AR 購物。

使用 Recording and Playback API 進行開發的應用實例

錄製和播放 API 可消除建構 AR 應用程式的時間和空間限制。以下是您可在專案中使用的幾種方法。

錄製一次,隨時隨地進行測試

您不必每次測試 AR 功能時都親自前往某個地點,只要使用 Recording API 錄製影片,然後使用任何相容的裝置播放即可。想打造購物中心嗎?您不需要每次要測試變更都行。只要錄製造訪記錄一次,之後就能輕鬆地在辦公桌前反覆改進及開發。

縮短迭代時間

您不必為想支援的每部 Android 裝置錄製影片,只要錄製一次影片,就能在疊代階段在多個不同裝置上播放。

減少開發團隊的手動測試負擔

請不要為每項新功能建立自訂資料集,而是在推出結合深度或 ARCore 最新追蹤功能的新功能時,善用預先錄製的資料集。

裝置相容性

您需要使用 ARCore 才能透過 Recording and Playback API 錄製資料,但播放內容時不需要使用 ARCore。使用這項功能錄製的 MP4 基本上就是影片檔案,內含額外的資料,可透過任何影片播放器觀看。您可以使用 Android 的 ExoPlayer 來檢查,或是任何同時支援 demux MP4 的相容播放器,以及管理 ARCore 新增的其他資料。

系統如何記錄影片和 AR 資料以供播放

ARCore 會將錄製的工作階段儲存為目標裝置上的 MP4 檔案。這些檔案包含多個視訊軌和其他資料。儲存這些工作階段後,您可以指示應用程式使用這項資料,取代即時攝影機工作階段。

錄音檔包含哪些內容?

ARCore 會在 H.264 影片中擷取下列資料。你可以透過任何與 MP4 相容的影片播放器存取這部影片,而且該播放器能夠切換音軌。由於部分與 MP4 相容的影片播放器會自動播放清單中的第一個音軌,但您不開放自行選擇播放,所以解析度最高的音軌為清單中的第一個音軌。

主要視訊軌 (CPU 映像檔軌)

主要影片檔案會記錄環境或場景,以利日後播放。根據預設,ARCore 會將用於動作追蹤的 640x480 (VGA) CPU 圖片,記錄為主要影像串流。

ARCore 不會擷取轉譯成為高解析度的 GPU 紋理, 設為直通式相機圖片

如要在影片播放期間提供高解析度的圖片串流, 您必須設定提供 CPU 映像檔的相機 所需解析度在這種情況下:

  • ARCore 會要求同時要求 640x480 (VGA) CPU 映像檔 根據設定中指定的動作追蹤和高解析度 CPU 影像 相機設定。
  • 擷取第二個 CPU 映像串流可能會影響應用程式效能,且不同裝置的影響程度也可能不同。
  • 在播放期間,ARCore 會使用在錄製期間擷取的高解析度 CPU 圖片,做為播放期間的 GPU 紋理。
  • 高解析度 CPU 映像檔會成為 MP4 錄製內容。

錄製期間所選的攝影機設定會決定錄製中的 CPU 圖像和主要影片串流。如果您未選取含有高解析度 CPU 圖片的相機設定,則無論您使用哪個影片播放器,這部影片都會成為檔案中的第一個音軌,並預設播放。

攝影機深度地圖視覺化

這是一種影片檔案,用於呈現相機的深度圖 (從裝置的硬體深度感應器記錄下來,例如飛行時間感應器 (或 ToF 感應器),並轉換成 RGB 聲道值。這部影片僅供預覽。

API 呼叫事件

ARCore 會運用裝置的陀螺儀和加速計感應器測量測量結果。並記錄其他資料,其中有些資料可能屬於機密資料:

  • 資料集格式版本
  • ARCore SDK 版本
  • Google Play 服務 - AR 適用版本
  • 裝置指紋 (adb shell getprop ro.build.fingerprint的輸出內容)
  • 關於用於 AR 追蹤的感應器的其他資訊
  • 使用 ARCore Geospatial API 時,裝置的預估位置、磁力儀讀數和指南針讀數