장면 형식의 SceneViews 동영상 녹화

이 개발자 가이드에서는 앱에서 장면 양식 SceneView을 로컬 동영상 파일에 녹화할 수 있도록 하는 단계를 안내합니다. 이 SDK는 VideoRecorder 클래스에서 사용할 수 있는 기능을 사용합니다. 이 기능은 Android용 Sceneform SDK 버전 1.6.0부터 VideoRecording 샘플 샘플의 일부로 제공됩니다.

샘플 앱 빌드 및 실행

VideoRecording Sample 앱을 빌드하고 실행하려면 다음 안내를 따르세요.

  1. Android 스튜디오에 Sceneform 프로젝트가 있고 Android 기기가 USB를 통해 개발 머신에 연결되어 있는지 확인합니다. 자세한 단계는 빠른 시작을 참고하세요.
  2. VideoRecording 샘플을 프로젝트로 가져옵니다.
  3. Android 스튜디오에서 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)를 사용합니다.