From 535786661ca65082e690931f32bb3e73863b77df Mon Sep 17 00:00:00 2001 From: Herman_Khodyrev Date: Wed, 16 Apr 2025 19:08:54 +0300 Subject: [PATCH 1/2] Add aspects config to New UI --- .../integrationapp/VideoEditorModule.kt | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt b/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt index 3e13e3b8..816943ea 100644 --- a/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt +++ b/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt @@ -1,6 +1,7 @@ package com.banuba.example.integrationapp import android.content.Context +import android.os.Bundle import androidx.fragment.app.Fragment import com.banuba.sdk.arcloud.data.source.ArEffectsRepositoryProvider import com.banuba.sdk.arcloud.di.ArCloudKoinModule @@ -12,8 +13,12 @@ import com.banuba.sdk.effectplayer.adapter.BanubaEffectPlayerKoinModule import com.banuba.sdk.export.di.VeExportKoinModule import com.banuba.sdk.gallery.di.GalleryKoinModule import com.banuba.sdk.playback.di.VePlaybackSdkKoinModule +import com.banuba.sdk.ve.data.EditorAspectSettings +import com.banuba.sdk.ve.data.aspect.AspectSettings +import com.banuba.sdk.ve.data.aspect.AspectsProvider import com.banuba.sdk.ve.di.VeSdkKoinModule import com.banuba.sdk.ve.flow.di.VeFlowKoinModule +import com.banuba.sdk.veui.data.EditorConfig import com.banuba.sdk.veui.di.VeUiSdkKoinModule import org.koin.android.ext.koin.androidContext import org.koin.core.context.startKoin @@ -63,5 +68,28 @@ private class SampleIntegrationKoinModule { ) { AudioBrowserMusicProvider() } + + single { + object : AspectsProvider { + + override var availableAspects: List = listOf( + EditorAspectSettings.`16_9` + ) + + override fun provide(): AspectsProvider.AspectsData { + return AspectsProvider.AspectsData( + allAspects = availableAspects, + default = availableAspects.first() + ) + } + override fun setBundle(bundle: Bundle) {} + } + } + + single { + EditorConfig( + aspectSettings = EditorAspectSettings.`16_9` + ) + } } } From e7cc65da3592ab8e3131f7139e3439a9bb68f789 Mon Sep 17 00:00:00 2001 From: Herman_Khodyrev Date: Thu, 17 Apr 2025 12:03:25 +0300 Subject: [PATCH 2/2] Add Aspects to exportParams --- .../CustomExportParamsProvider.kt | 49 +++++++++++++++++++ .../integrationapp/VideoEditorModule.kt | 21 +++++++- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/banuba/example/integrationapp/CustomExportParamsProvider.kt diff --git a/app/src/main/java/com/banuba/example/integrationapp/CustomExportParamsProvider.kt b/app/src/main/java/com/banuba/example/integrationapp/CustomExportParamsProvider.kt new file mode 100644 index 00000000..5e3e65bc --- /dev/null +++ b/app/src/main/java/com/banuba/example/integrationapp/CustomExportParamsProvider.kt @@ -0,0 +1,49 @@ +package com.banuba.example.integrationapp + +import android.net.Uri +import android.util.Size +import androidx.core.net.toFile +import com.banuba.sdk.core.AspectRatio +import com.banuba.sdk.core.VideoResolution +import com.banuba.sdk.export.data.ExportParams +import com.banuba.sdk.export.data.ExportParamsProvider +import com.banuba.sdk.ve.domain.VideoRangeList +import com.banuba.sdk.ve.effects.Effects +import com.banuba.sdk.ve.effects.music.MusicEffect +import com.banuba.sdk.ve.effects.watermark.WatermarkBuilder + +class CustomExportParamsProvider( + private val exportDir: Uri, + private val watermarkBuilder: WatermarkBuilder, +) : ExportParamsProvider { + + override fun provideExportParams( + effects: Effects, + videoRangeList: VideoRangeList, + musicEffects: List, + videoVolume: Float, + ): List { + val exportSessionDir = exportDir.toFile().apply { + deleteRecursively() + mkdirs() + } + + val exportVideoHD = ExportParams( + resolution = VideoResolution.Exact.QHD, + aspectRatio= AspectRatio(16.0/9), + effects = effects, + videoRangeList = videoRangeList, + debugEnabled = true, + destDir = exportSessionDir, + fileExt = ".mp4", + fileName = "export_video_QHD", + volumeVideo = videoVolume, + musicEffects = musicEffects, + extraAudioFile = Uri.EMPTY, + interactivePreviewParams = null, + size = Size(0, 0), + useHevcIfPossible = true + ) + return listOf(exportVideoHD) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt b/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt index 816943ea..7c177607 100644 --- a/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt +++ b/app/src/main/java/com/banuba/example/integrationapp/VideoEditorModule.kt @@ -1,22 +1,34 @@ package com.banuba.example.integrationapp import android.content.Context +import android.net.Uri import android.os.Bundle +import android.util.Size +import androidx.core.net.toFile import androidx.fragment.app.Fragment import com.banuba.sdk.arcloud.data.source.ArEffectsRepositoryProvider import com.banuba.sdk.arcloud.di.ArCloudKoinModule import com.banuba.sdk.audiobrowser.di.AudioBrowserKoinModule import com.banuba.sdk.audiobrowser.domain.AudioBrowserMusicProvider +import com.banuba.sdk.core.AspectRatio +import com.banuba.sdk.core.VideoResolution import com.banuba.sdk.core.data.TrackData import com.banuba.sdk.core.ui.ContentFeatureProvider import com.banuba.sdk.effectplayer.adapter.BanubaEffectPlayerKoinModule +import com.banuba.sdk.export.data.ExportParams +import com.banuba.sdk.export.data.ExportParamsProvider import com.banuba.sdk.export.di.VeExportKoinModule import com.banuba.sdk.gallery.di.GalleryKoinModule import com.banuba.sdk.playback.di.VePlaybackSdkKoinModule import com.banuba.sdk.ve.data.EditorAspectSettings +import com.banuba.sdk.ve.data.EditorAspectSettings.`16_9`.aspectRatio import com.banuba.sdk.ve.data.aspect.AspectSettings import com.banuba.sdk.ve.data.aspect.AspectsProvider import com.banuba.sdk.ve.di.VeSdkKoinModule +import com.banuba.sdk.ve.domain.VideoRangeList +import com.banuba.sdk.ve.effects.Effects +import com.banuba.sdk.ve.effects.music.MusicEffect +import com.banuba.sdk.ve.effects.watermark.WatermarkBuilder import com.banuba.sdk.ve.flow.di.VeFlowKoinModule import com.banuba.sdk.veui.data.EditorConfig import com.banuba.sdk.veui.di.VeUiSdkKoinModule @@ -91,5 +103,12 @@ private class SampleIntegrationKoinModule { aspectSettings = EditorAspectSettings.`16_9` ) } + + factory { + CustomExportParamsProvider( + exportDir = get(named("exportDir")), + watermarkBuilder = get() + ) + } } -} +} \ No newline at end of file