Integration Guide on Flutter
This guide helps to complete full Video Editor SDK integration.
Import it
Use in your Dart code
import 'package:ve_sdk_flutter/ve_sdk_flutter.dart';
Configuration
Android
Update gradle files
[!IMPORTANT] if your project supports Flutter Gradle plugin.
Update your project gradle with the following code:
buildscript {
ext.kotlin_version = '1.8.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
IOS
Add specs to Podfile
Add the following specs at the top of your Podfile
platform :ios, '15.0'
source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/Banuba/specs.git'
source 'https://github.com/sdk-banuba/banuba-sdk-podspecs.git'
Add permissions
Specify the required iOS permissions used by the SDK in your Info.plist
<key>NSAppleMusicUsageDescription</key>
<string>This app requires access to the media library</string>
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app requires access to the microphone.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app requires access to the photo library.</string>
Add AR effects
Banuba Face AR SDK product is used on camera and editor screens for applying various AR effects while making video content.
- Android - add effects to the project by the path android/app/src/main/assets/bnb-resources/effects.
- iOS - add the effect to resource folder
bundleEffects. Make sure to select the "Copy items if needed" and "Create folder references" checkboxes while adding effects to thebundleEffectsfolder.
Android
Preview files are in drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi folders.
Keep in mind that drawable-xxxhdpi contains files with the highest resolution. Additionally, you can copy paste just one set of previews if it meets your requirements.
iOS
Copy the ColorEffectsPreview folder from example's asset catalog to your app's asset catalog.
Disable Face AR SDK
Android
Set the ENABLE_FACE_AR flag to the gradle.properties:
org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
+ ENABLE_FACE_AR=false
IOS
Set the environment ENABLE_FACE_AR flag the the PodFile:
...
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+ ENV['ENABLE_FACE_AR'] = 'false'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
...
Enable Android Photo Picker
Set the ENABLE_GALLERY flag to the gradle.properties:
org.gradle.jvmargs=-Xmx4096M
android.useAndroidX=true
android.enableJetifier=true
+ ENABLE_GALLERY=false
Limit processor architectures on Android
Banuba Video Editor on Android supports the following processor architectures - arm64-v8a, armeabi-v7a, x86-64.
Please keep in mind that each architecture adds extra MBs to your app.
To reduce the app size you can filter architectures in your app/build.gradle file.
...
defaultConfig {
...
// Use only ARM processors
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
Customizations
Usage
Create instance of the FeaturesConfig to apply various Video Editor configurations.
Pass the FeaturesConfig instance to any Video Editor start method. For example:
Future<void> _startVideoEditorInCameraMode() async {
final config = FeaturesConfigBuilder()
.setAudioBrowser(AudioBrowser.fromSource(AudioBrowserSource.local))
// ...
.build();
try {
dynamic exportResult =
await _veSdkFlutterPlugin.openCameraScreen(_licenseToken, config);
_handleExportResult(exportResult);
} on PlatformException catch (e) {
_handlePlatformException(e);
}
}