平台專屬指南
Android (Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine

絕大多數的擴增實境體驗都是「即時」的,使用者必須在特定時間位於特定地點,並將手機設為特殊的 AR 模式,然後開啟 AR 應用程式。舉例來說,如果使用者想查看 AR 沙發在客廳的樣子,就必須在實際位於客廳時,將沙發「放置」在螢幕上的環境中。
錄製和播放 API 擺脫了「即時」需求,讓您建立的 AR 體驗可隨時隨地觀看。Recording API 會將攝影機的影片串流、IMU 資料或您選擇儲存的任何其他自訂中繼資料,儲存在 MP4 檔案中。接著,您可以透過 Playback API 將這些錄製的影片提供給 ARCore,ARCore 會將 MP4 視為即時工作階段動態饋給。您還是可以使用即時攝影機工作階段,但有了這項新 API,AR 應用程式就能選擇使用預先錄製的 MP4,而非即時工作階段。

使用者也能善用這項功能。無論身在何處,使用者都能從原生相簿中調出使用 Recording and Playback API 錄製的任何影片,並編輯或播放 AR 物件、特效和濾鏡。有了這項功能,使用者就能在通勤上班的火車上,或是在床上放鬆時,享受 AR 購物體驗。
使用 Recording and Playback API 開發的用途
透過 Recording and Playback API,您不必受限於時間和空間,即可建構 AR 應用程式。以下列舉幾種在專案中運用這項功能的做法。
錄製一次,隨處測試
您不必每次測試 AR 功能時都親自前往某個地點,只要使用 Recording API 錄製影片,然後在任何相容裝置上播放即可。在購物中心打造體驗嗎?您不必每次想測試變更時都前往該處。只要錄製一次參訪過程,就能在辦公桌前輕鬆反覆查看並開發。
縮短疊代時間
您不必為要支援的每部 Android 裝置和要測試的每個情境錄製影片,只要錄製一次,就能在疊代階段於多部不同裝置上播放。
減輕開發團隊的手動測試負擔
推出新功能時,如果採用 ARCore 的深度或最新追蹤技術,請善用預先錄製的資料集,不必為每個新功能建立自訂資料集。
裝置相容性
您需要 ARCore 才能使用 Recording and Playback API 記錄資料,但不需要 ARCore 就能播放內容。使用這項功能錄製的 MP4 檔案基本上就是影片檔案,但含有額外資料,可透過任何影片播放程式觀看。您可以使用 Android 的 ExoPlayer 檢查這些檔案,或是使用任何相容的播放器,這類播放器必須能夠解多工處理 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 時,裝置的預估位置、磁力儀讀數和羅盤讀數