錄製和播放簡介

平台專屬指南

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

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

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

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

「Recording and Playback API」移除建構 AR 應用程式的時間和空間限制。您可以參考以下方式,在自己的專案中使用這項工具。

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

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

減少疊代時間

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

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

與其為每個新功能建立自訂資料集,不如使用預先錄製的資料集,同時推出新的功能,並加入 ARCore 深度或最新的追蹤改善項目。

裝置相容性

你必須使用 ARCore 才能透過 Recording and Playback API 錄製資料,但播放內容並不需要該 API。使用這項功能錄製的 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 會使用 在播放期間擷取的 GPU 紋理。
  • 高解析度 CPU 映像檔會成為 MP4 錄製內容。

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

相機深度地圖視覺化

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

API 呼叫事件

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

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