Sceneform SceneViews の録画

このデベロッパー ガイドでは、アプリがシーンの動画 SceneView をローカルの動画ファイルに録画できるようにする手順について説明します。VideoRecorder クラスで利用可能な機能を使用します。この機能は、Sceneform SDK for Android のバージョン 1.6.0 以降の VideoRecording サンプル サンプルの一部として提供されています。

サンプルアプリをビルドして実行する

VideoRecording Sample アプリをビルドして実行するには:

  1. Android Studio にシーン プロジェクトが含まれていること、および Android デバイスが USB を介して開発マシンに接続されていることを確認してください。詳細な手順については、クイックスタートをご覧ください。
  2. プロジェクトに VideoRecording サンプルをインポートします。
  3. Android Studio で [Run] をクリックします。次に、デプロイのターゲットとしてデバイスを選択し、[OK] をクリックしてデバイス上でサンプルアプリを起動します。
  4. デバイスを移動して 3D オブジェクトを周囲のスペースに配置したら、[Record] ボタンをクリックして録画を開始し、[Stop] ボタンをクリックして録画を停止します。

録画した動画にアクセスするには、デバイスのカメラロール、Sceneform という名前のフォトアルバム、またはパスを使用します。

/sdcard/Pictures/Sceneform/Sample<hex characters>.mp4

アプリがシーン動画の録画をサポートできるようにする概要

アプリでシーンシーンを録画できるようにするには、次のことを行う必要があります。

  1. アプリの権限のリクエスト
  2. 動画レコーダーの初期化
  3. 録画の開始と停止

1. アプリの権限をリクエストする

動画ファイルをローカル ストレージに書き込むには、アプリで AndroidManifest.xml に次の行を追加して、WRITE_EXTERNAL_STORAGE 権限をリクエストする必要があります。

<application>
  …
</application>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2. 動画レコーダーを初期化する

VideoRecording サンプルには VideoRecorder という名前のクラスが含まれています。このクラスは、MediaRecorder を使用して SceneView オブジェクトからフレームをキャプチャして動画を作成するのに必要なすべての設定ロジックをカプセル化します。

動画レコーダーを使用するには、アクティビティ(onCreate() など)で VideoRecorder クラスを初期化します。

// Create a new video recorder instance.
videoRecorder = new VideoRecorder();

// Specify the AR scene view to be recorded.
videoRecorder.setSceneView(arFragment.getArSceneView());

// Set video quality and recording orientation to match that of the device.
int orientation = getResources().getConfiguration().orientation;
videoRecorder.setVideoQuality(CamcorderProfile.QUALITY_2160P, orientation);

3. 動画を撮影する

  1. 録画を開始するには、onToggleRecord() を呼び出します。

       // Returns true if recording has started.
       boolean recording = videoRecorder.onToggleRecord();
    
  2. 録画を停止するには、onToggleRecord() をもう一度呼び出します。

       // Returns false if recording has stopped.
       boolean recording = videoRecorder.onToggleRecord();
    
  3. 録画のファイルパスを取得するには、getVideoPath() を使用します。

       // Determine absolute file path of video recording.
       String videoPath = videoRecorder.getVideoPath().getAbsolutePath();
    
  4. (省略可)adb を使用して、録画したファイルを開発マシンにコピーします。

adb pull /sdcard/…/path/to/recorded/video.mp4 .

カメラロール上に適切に表示されるよう、画像や動画の正しい場所を特定するために、VideoRecord クラスは Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) を使用します。