Sceneform SceneViews 的錄影

本開發人員指南引導您完成這些步驟,以便讓應用程式將場景 SceneView 錄製到本機影片檔案中。其使用 VideoRecorder 類別提供的功能,該類別從 VideoRecording 範例 範例中開始,從 Android Sceneform SDK 1.6.0 版開始。

建構並執行範例應用程式

如要建構並執行 VideoRecording 範例應用程式:

  1. 確認 Android Studio 中有 Sceneform 專案,且您的 Android 裝置已透過 USB 連線至開發機器。如需詳細步驟,請參閱快速入門導覽課程
  2. VideoRecording 範例匯入專案。
  3. 在 Android Studio 中,按一下「執行」圖示 。然後選擇裝置做為部署目標,然後按一下「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 Sample 包含名為 VideoRecorder 的類別,可封裝使用 MediaRecorderSceneView 物件擷取影片所需的設定邏輯。

如要使用錄影工具,請在活動中初始化 VideoRecorder 類別,例如 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. 建立影片錄製

  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)