Docs
API Docs

Change quality of video export

Usually the export properties are based on the input video. If the device codec allows this, the resolution and other options are adopted. If the device does not support the corresponding resolution, the next lower one is used.

To define specific resolutions and not just aspects you can add a CropAspectAsset to the UiConfigAspect and set the fixedSize boolean to true.

// Add aspect assets to backend
settingsList.config.apply {
    getAssetMap(CropAspectAsset::class.java).clear().add(
      CropAspectAsset.FREE_CROP,
      CropAspectAsset("crop_600_800", 600, 800, true),
      CropAspectAsset("crop_960_1280", 960, 1280, true),
      CropAspectAsset("crop_1080_1920", 1080, 1920, true)
    )
}

// Add items to UI
  settingsList.getSettingsModel(UiConfigAspect::class.java).apply {
    setAspectList(
      CropAspectItem("crop_600_800", "3:4"),
      CropAspectItem("crop_960_1280", "3:4"),
      CropAspectItem("crop_1080_1920", "9:16")
    )
}

Other export properties can be configured in the VideoEditorSaveSettings. The two values ​​iFrameIntervalInSeconds and bitRate are particularly relevant here to influence the quality.