録画と再生の概要

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

拡張現実のエクスペリエンスのほとんどは「リアルタイム」です。そのため、ユーザーは特定の場所、特定の時間に、スマートフォンを特別な 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 and Playback API を使用すると、AR アプリの開発にかかる時間とスペースの制約を解消できます。次に、独自のプロジェクトでこの機能を使用する方法をいくつかご紹介します。

一度録音すれば、どこでもテスト可能

AR 機能をテストする必要があるたびに実際にその場所に行くのではなく、Recording API を使用して動画を録画し、対応するデバイスで再生できます。ショッピング モールでエクスペリエンスを構築する場合は、変更をテストするたびに、このページに移動する必要はありません。訪問を 1 回記録するだけで、自分のデスクで反復して開発できます。

反復処理時間を短縮する

サポートする Android デバイスごとに動画を録画するのではなく、テストするシナリオごとに動画を 1 回録画し、反復処理フェーズ中に複数のデバイスで再生できます。

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

新しい機能ごとにカスタム データセットを作成するのではなく、事前録画されたデータセットを活用しながら、ARCore の最新の深度やトラッキング機能が組み込まれた新機能をリリースします。

デバイスの互換性

Recording と 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 イメージの両方をリクエストします。
  • 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 を使用する場合: デバイスの推定位置、磁力計の測定値、コンパスの測定値