Gravação de vídeo do Sceneform SceneViews

Este guia do desenvolvedor guiará você pelas etapas para permitir que seu app grave o formato de cena SceneViews em um arquivo de vídeo local. Ele usa a funcionalidade disponível na classe VideoRecorder, que faz parte da amostra de Exemplo de gravação de vídeo a partir da versão 1.6.0 do SDK do Sceneform para Android.

Criar e executar o app de exemplo

Para criar e executar o app de amostragem de VideoRecording:

  1. Verifique se você tem um projeto Sceneform no Android Studio e se o dispositivo Android está conectado à máquina de desenvolvimento via USB. Veja as etapas detalhadas no guia de início rápido.
  2. Importe a amostra de VideoRecording para seu projeto.
  3. No Android Studio, clique em Run . Em seguida, escolha seu dispositivo como destino da implantação e clique em OK para iniciar o app de amostra no seu dispositivo.
  4. Ao mover o dispositivo e colocar objetos 3D no espaço ao seu redor, clique no botão "Gravar" para começar a gravação e no botão "Parar" para interromper a gravação.

O vídeo gravado poderá ser acessado pelo rolo da câmera no dispositivo, em um álbum de fotos chamado Sceneform ou no caminho:

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

Visão geral de como permitir que um app ofereça suporte à gravação de vídeos em formato de cena

Permitir que seu app grave cenas do Sceneform exige:

  1. Como solicitar permissões do app
  2. Inicialização do gravador de vídeo
  3. Iniciar e parar a gravação de vídeos

1. Solicitar permissões do app

Para gravar o arquivo de vídeo no armazenamento local, o app precisa solicitar a permissão WRITE_EXTERNAL_STORAGE adicionando a seguinte linha ao AndroidManifest.xml:

<application>
  …
</application>

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

2. Inicializar o gravador de vídeo

O SampleRecording Sample inclui uma classe chamada VideoRecorder, que encapsula toda a lógica de configurações necessárias para usar o MediaRecorder para capturar frames de um objeto SceneView para criar um vídeo.

Para usar o gravador de vídeo, inicialize a classe VideoRecorder na sua atividade, por exemplo, em 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. Criar uma gravação de vídeo

  1. Para começar a gravar, chame onToggleRecord():

       // Returns true if recording has started.
       boolean recording = videoRecorder.onToggleRecord();
    
  2. Para interromper a gravação, chame onToggleRecord() uma segunda vez:

       // Returns false if recording has stopped.
       boolean recording = videoRecorder.onToggleRecord();
    
  3. Para recuperar o caminho do arquivo da gravação de vídeo, use getVideoPath():

       // Determine absolute file path of video recording.
       String videoPath = videoRecorder.getVideoPath().getAbsolutePath();
    
  4. Outra opção é copiar o arquivo gravado na máquina de desenvolvimento usando adb:

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

Para determinar o local correto de imagens e vídeos para que eles apareçam corretamente no rolo da câmera, a classe VideoRecord usa Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).