録画と再生の概要

プラットフォーム固有のガイド

拡張現実のエクスペリエンスの大部分は「リアルタイム」です。ユーザーは、スマートフォンを特別な AR モードに設定し、AR アプリを開いた状態で、特定の時間に特定の場所にいる必要があります。たとえば、ユーザーがリビングルームで AR ソファがどのように表示されるかを確認したい場合は、部屋にいる間にソファを画面環境に「配置」する必要があります。

Recording and Playback API を使用すれば、この「リアルタイム」の要件がなくなるため、いつでもどこでも表示できる AR 体験を作成できます。Recording API は、カメラの動画ストリーム、IMU データ、その他選択したカスタム メタデータを MP4 ファイルに保存します。録画した動画を Playback API を使用して ARCore にフィードすると、MP4 がライブ セッション フィードのように扱われます。引き続きライブカメラ セッションを使用できますが、この新しい API を使用すると、AR アプリケーションはライブ セッションの代わりに事前に録音された MP4 を使用することを選択できます。

エンドユーザーはこの機能を利用できます。ユーザーが実生活のどこにいるかにかかわらず、Recording and Playback API で録画した動画をネイティブのギャラリーから取り込み、AR オブジェクト、エフェクト、フィルタで編集または再生することができます。この機能を使用すると、ユーザーは、通勤電車の中や、ベッドの中でくつろぎながら、AR ショッピングを行うことができます。

Recording and Playback API を使用した開発のユースケース

Recording API と Playback API により、AR アプリの構築における時間とスペースの制約を取り除くことができます。ここでは、独自のプロジェクトでの使用方法について説明します。

一度の録画でどこでもテスト

AR 機能を試す必要があるたびに現地を訪れる代わりに、Recording API を使用して動画を録画し、互換性のあるデバイスで再生することができます。ショッピング モールでエクスペリエンスを高めるには、変更をテストするたびに移動する必要はありません。一度訪問を録画したら、自分のデスクで作業を繰り返すだけで、快適に開発を進めることができます。

イテレーション時間の短縮

サポートする Android デバイスごとに動画を録画する代わりに、テストするシナリオごとに動画を 1 回録画して、反復フェーズ中に複数の異なるデバイスで再生することができます。

開発チーム全体の手動テストの負担が軽減される

新しい機能ごとにカスタム データセットを作成する代わりに、事前に記録されたデータセットを活用しながら、ARCore の深度や最新のトラッキング改善を取り入れた新機能をリリースします。

デバイスの互換性

Recording and Playback API でデータを記録するには ARCore が必要ですが、再生には 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 画像の両方をリクエストします。
  • 2 番目の CPU イメージ ストリームをキャプチャすると、アプリのパフォーマンスに影響することがあります。また、デバイスによって影響が異なる可能性があります。
  • 再生時、ARCore は録画中にキャプチャされた高解像度の CPU 画像を、再生中の GPU テクスチャとして使用します。
  • 高解像度の CPU 画像が MP4 録画のデフォルトの動画ストリームになります。

録画中に選択したカメラ構成によって、録画時の CPU 画像とメイン動画ストリームが決まります。高解像度の CPU 画像を使用したカメラ構成を選択しない場合、この動画がファイルの最初のトラックとなり、使用する動画プレーヤーに関係なくデフォルトで再生されます。

カメラ深度マップの可視化

これはカメラの深度マップを表す動画ファイルです。Time-of-Flight センサー(または ToF センサー)などのデバイスのハードウェア深度センサーから記録され、RGB チャンネル値に変換されます。この動画はプレビューの目的にのみ使用してください。

API 呼び出しイベント

ARCore は、デバイスのジャイロメーターと加速度センサーからの測定値を記録します。また、その他のデータも記録されます。これには機密性の高いデータが含まれます。

  • データセット形式のバージョン
  • ARCore SDK のバージョン
  • Google Play 開発者サービス(AR)のバージョン
  • デバイスのフィンガープリント(adb shell getprop ro.build.fingerprint の出力)
  • AR トラッキングに使用されるセンサーに関する追加情報
  • ARCore Geospatial API を使用している場合は、デバイスの推定位置、磁力計の測定値、コンパスの測定値