Grabación de video de SceneView con SceneView

En esta guía para desarrolladores, se explican los pasos que debes seguir a fin de permitir que tu app grabe SceneViews de Sceneform en un archivo de video local. Usa la funcionalidad disponible en la clase VideoRecorder, que está disponible como parte de la muestra VideoRecording Sample a partir de la versión 1.6.0 del SDK de Sceneform para Android.

Cómo compilar y ejecutar la app de muestra

Para compilar y ejecutar la app de VideoRecording Sample:

  1. Asegúrate de tener un proyecto de Sceneform en Android Studio y de que tu dispositivo Android esté conectado a la máquina de desarrollo por USB. Consulta la guía de inicio rápido para ver los pasos detallados.
  2. Importa el Ejemplo de VideoRecording a tu proyecto.
  3. En Android Studio, haz clic en Run . Luego, elige tu dispositivo como destino de implementación y haz clic en OK para iniciar la app de muestra en tu dispositivo.
  4. A medida que muevas el dispositivo y coloques objetos 3D en el espacio que te rodea, haz clic en el botón Grabar para comenzar a grabar y en el botón Detener para detener la grabación.

Se podrá acceder al video grabado a través de la galería de fotos del dispositivo, en un álbum de fotos llamado Sceneform o en la ruta:

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

Descripción general sobre cómo habilitar una app para que admita la grabación de video de Sceneform

Para habilitar la app a fin de grabar escenas de Sceneform, se requiere lo siguiente:

  1. Cómo solicitar permisos de la app
  2. Inicializando la grabadora de video
  3. Cómo iniciar y detener la grabación de video

1. Cómo solicitar permisos de la app

Para poder escribir el archivo de video en el almacenamiento local, tu app debe solicitar el permiso WRITE_EXTERNAL_STORAGE agregando la siguiente línea a tu AndroidManifest.xml:

<application>
  …
</application>

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

2. Cómo inicializar la grabadora de video

La Muestra de VideoRecording incluye una clase llamada VideoRecorder, que encapsula toda la lógica de configuración necesaria para usar MediaRecorder a fin de capturar fotogramas de un objeto SceneView a fin de crear un video.

Para usar la grabadora de video, inicializa la clase VideoRecorder en tu actividad, por ejemplo, en onCreate().

// 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. Cómo crear una grabación de video

  1. Para comenzar a grabar, llama a onToggleRecord():

       // Returns true if recording has started.
       boolean recording = videoRecorder.onToggleRecord();
    
  2. Para detener la grabación, vuelve a llamar a onToggleRecord():

       // Returns false if recording has stopped.
       boolean recording = videoRecorder.onToggleRecord();
    
  3. Para recuperar la ruta del archivo de la grabación de video, usa getVideoPath():

       // Determine absolute file path of video recording.
       String videoPath = videoRecorder.getVideoPath().getAbsolutePath();
    
  4. De manera opcional, copia el archivo grabado en tu máquina de desarrollo mediante adb:

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

Para determinar la ubicación correcta de las imágenes y los videos a fin de que se muestren correctamente en la galería de fotos, la clase VideoRecord usa Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).