録画と再生の概要

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

拡張現実の多くは「リアルタイム」です。スマートフォンを特定の場所に置いて、AR アプリを開いておくことで、ユーザーは特定の時間に特定の場所にいる必要があります。たとえば、AR ソファがリビングルームにどのように表示されるかを知りたい場合は、実際に部屋にいるときに画面上でソファを「置く」必要があります。

Recording and Playback API は、こうした「リアルタイム」要件を取り除きます。これにより、いつでもどこでも確認できる AR 体験を構築できます。Recording API は、カメラの動画ストリーム、IMU データ、または任意のカスタム メタデータを MP4 ファイルに保存します。録画した動画は Playback API を通じて ARCore にフィードできるため、MP4 はライブ セッション フィードと同じように扱われます。ライブカメラ セッションは引き続き使用できますが、この新しい API では、AR アプリケーションでそのライブ セッションの代わりに事前に録画された MP4 を使用できます。

エンドユーザーはこの機能を利用することもできます。実世界のどこでも、Recordings and Playback API で録画した動画をネイティブ ギャラリーから取り出して、AR オブジェクト、エフェクト、フィルタの編集や再生が可能です。この機能により、ユーザーは電車やオフィスへの移動中、ベッドの中でくつろいで AR ショッピングを楽しめます。

Recording API と Playback API を使用して開発するユースケース

Recording and Playback API は、AR アプリの作成にかかる時間とスペースの制約を取り除きます。ここでは、それをプロジェクトで使用する方法をいくつかご紹介します。

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

AR 機能をテストするたびに特定の場所に来るのではなく、Recording API を使用して動画を録画し、対応する任意のデバイスで再生することができます。ショッピング モールでのショッピング体験を構築しますか?変更のテストのたびに毎回確認する必要はありません。訪問したことを一度記録すれば、自分のデスクで快適に反復処理を行えます。

反復時間の短縮

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

開発チーム全体で手動テストの負担を軽減する

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

デバイスの互換性

Recording と 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 画像を持つカメラ設定を選択しなかった場合は、使用する動画プレーヤーにかかわらず、この動画はファイル内の最初のトラックになります。

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

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

API 呼び出しイベント

ARCore が、デバイスのジャイロメーター センサーおよび加速度計センサーの測定値を記録します。また、他のデータも記録します(機密データを含む場合もあります)。

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