turbina_sdk 1.2.4 copy "turbina_sdk: ^1.2.4" to clipboard
turbina_sdk: ^1.2.4 copied to clipboard

Turbina Video SDK for Flutter - Professional video processing, editing, and AR effects with native C++ performance via FFI

Turbina SDK for Flutter #

pub package License

Professional Video Processing, Editing, and AR Effects for Flutter

FeaturesInstallationQuick StartDocumentationExamples


🎯 Features #

📹 Real-time Video Processing #

  • 11 GPU-accelerated filters (Vintage, Cinematic, B&W, Sepia, Warm, Cool, etc.)
  • Real-time camera capture with front/back switching
  • Face tracking with 468 landmarks (MediaPipe)
  • AR effects (Beautification, Masks, Filters)
  • Video recording with H.264/H.265 encoding

🎬 38+ Video Editing Operations #

  • Basic: Trim, Split, Merge, Reverse
  • Time: Speed Control (0.25x-4x), Slow Motion
  • Transform: Rotate, Flip, Crop, Aspect Ratio
  • Color: Brightness, Contrast, Saturation, Hue, Temperature, LUTs
  • Audio: Add Music, Volume Control, Extract Audio, Mute, Audio Effects
  • Text & Graphics: Text Overlay, Watermark, Animated Text
  • Effects: Blur, Vignette, Sharpen, Grain, Fade, Mirror, Chroma Key
  • Advanced: Transitions, Picture-in-Picture, Keyframes, Zoom, Stabilization

🖼️ 26+ Image/Video Processing Utilities #

  • Video Metadata: Duration, Resolution, FPS, Bitrate, Codecs
  • Thumbnails: Generate thumbnails with 3 quality levels
  • Frame Extraction: Extract single or multiple frames
  • Image Resize: Fit, Fill, Stretch, Scale modes
  • Image Compression: JPEG, PNG, WebP, BMP
  • Image Filters: Apply all filters to static images
  • Image Transform: Rotate, Flip, Crop, Blur

🔐 License & Analytics #

  • License validation with backend
  • MAU (Monthly Active Users) tracking
  • Usage analytics and quota management

📦 Installation #

Add Turbina SDK to your pubspec.yaml:

dependencies:
  turbina_sdk: ^1.1.0

Run:

flutter pub get

🚀 Native Performance (FFI) #

Turbina SDK v1.1.0+ uses FFI (Foreign Function Interface) for direct C++ core integration, offering 10-15x better performance than traditional MethodChannel.

First Launch:

  • Automatically downloads native binaries (~2-5 MB) from GitHub Releases
  • Cached locally for instant subsequent launches
  • No app size increase - only downloaded when needed

Architecture:

Flutter App (Dart)
    ↓ FFI
C++ Core (Native)
    ↓
Hardware (GPU/CPU)

🚀 Quick Start #

1. Initialize the SDK (FFI - High Performance) #

import 'package:turbina_sdk/turbina_sdk.dart';

// Use TurbinaSDKFFI for native C++ performance (Recommended)
final turbina = TurbinaSDKFFI();

// Initialize with your license
await turbina.initialize(TurbinaConfig(
  licenseKey: 'sk_live_your_key',  // Production key
  appId: 'com.yourcompany.yourapp',
  debug: false,  // Set to true only during development
));

// API URL is auto-detected based on license key prefix:
// sk_live_* -> production, sk_test_* -> staging, sk_dev_* -> localhost

📦 Binary Distribution

Pre-compiled C++ binaries are automatically downloaded from our public GitHub repository:

  • Repository: Chancilson/turbina-binaries
  • Secure, fast, and reliable
  • No authentication required
  • Cached locally after first download

2. Start Camera with Filters #

// Start camera
await turbina.startCamera(CameraConfig(
  facing: CameraFacing.front,
  resolution: CameraResolution.high,
  fps: 30,
));

// Apply a filter
await turbina.applyFilter(FilterType.cinematic, intensity: 0.8);

// Switch camera
await turbina.switchCamera();

3. Record Video #

// Start recording
await turbina.startRecording(
  'output.mp4',
  RecordingConfig(
    codec: VideoCodec.h264,
    bitrate: 5000000, // 5 Mbps
    quality: 80,
  ),
);

// Stop recording
final outputPath = await turbina.stopRecording();
print('Video saved: $outputPath');

4. Edit Videos #

// Trim video
await turbina.trimVideo(
  inputPath: 'input.mp4',
  outputPath: 'output.mp4',
  startTime: 5.0,
  endTime: 15.0,
);

// Merge videos
await turbina.mergeVideos(
  inputPaths: ['video1.mp4', 'video2.mp4'],
  outputPath: 'merged.mp4',
);

// Apply slow motion
await turbina.slowMotion(
  inputPath: 'input.mp4',
  outputPath: 'output.mp4',
  slowFactor: 2.0,
  useInterpolation: true,
);

// Add music
await turbina.addMusic(
  videoPath: 'video.mp4',
  audioPath: 'music.mp3',
  outputPath: 'output.mp4',
  volume: 0.5,
  fadeIn: 2.0,
  fadeOut: 2.0,
  loop: true,
);

5. Face Tracking & AR Effects #

// Enable face tracking
await turbina.enableFaceTracking();

// Get face landmarks (468 points)
final landmarks = await turbina.getFaceLandmarks();
if (landmarks != null) {
  print('Detected ${landmarks.faceCount} face(s)');
  print('Confidence: ${landmarks.confidence}');
}

// Apply AR effect
await turbina.applyEffect(
  EffectType.beautification,
  EffectParams(intensity: 0.7),
);

6. Image Processing #

// Resize image
await turbina.resizeImage(
  inputPath: 'input.jpg',
  outputPath: 'output.jpg',
  width: 1920,
  height: 1080,
  mode: 0, // 0 = fit
);

// Compress image
await turbina.compressImage(
  inputPath: 'input.jpg',
  outputPath: 'output.jpg',
  quality: 80,
);

// Apply filter to image
await turbina.applyFilterToImage(
  inputPath: 'input.jpg',
  outputPath: 'output.jpg',
  filter: FilterType.vintage,
);

7. Video Metadata #

// Get video information
final info = await turbina.getVideoInfo('video.mp4');
print('Duration: ${info.duration}s');
print('Resolution: ${info.width}x${info.height}');
print('FPS: ${info.fps}');
print('Codec: ${info.codec}');

// Generate thumbnail
await turbina.generateThumbnail(
  videoPath: 'video.mp4',
  outputPath: 'thumbnail.jpg',
  timestamp: -1, // -1 = middle of video
  quality: 2, // 0 = low, 1 = medium, 2 = high
);

8. License & Analytics #

// Validate license
final license = await turbina.validateLicense();
print('Tier: ${license.tier}');
print('Status: ${license.status}');
print('Expires: ${license.expiresAt}');

// Track MAU
await turbina.trackMAU('user-123');

📚 API Reference #

Core SDK #

Method Description
initialize(config) Initialize the SDK with license and config
dispose() Dispose SDK resources
getVersion() Get SDK version string

Camera #

Method Description
startCamera([config]) Start camera capture
stopCamera() Stop camera capture
switchCamera() Switch front/back camera

Filters #

Method Description
applyFilter(filter, intensity) Apply real-time filter
removeFilter() Remove current filter
getAvailableFilters() Get available filters for license

Face Tracking #

Method Description
enableFaceTracking() Enable face tracking
disableFaceTracking() Disable face tracking
getFaceLandmarks() Get 468 face landmarks

Effects #

Method Description
loadEffect(effectId) Load an AR effect
applyEffect(effect, params) Apply AR effect
removeEffect() Remove current effect

Recording #

Method Description
startRecording(path, config) Start video recording
stopRecording() Stop recording, returns path

Video Editing #

Method Description
trimVideo({...}) Trim video start/end
mergeVideos({...}) Merge multiple videos
changeSpeed({...}) Change playback speed
slowMotion({...}) Apply slow motion effect
rotateVideo({...}) Rotate video (90°, 180°, 270°)
flipVideo({...}) Flip video (horizontal/vertical)
addMusic({...}) Add background music
adjustVolume({...}) Adjust video volume

Video Processing #

Method Description
getVideoInfo(path) Get video metadata
generateThumbnail({...}) Generate thumbnail from video
extractFrame({...}) Extract frame at timestamp

Image Processing #

Method Description
resizeImage({...}) Resize image with mode
compressImage({...}) Compress image (JPEG quality)
applyFilterToImage({...}) Apply filter to static image

License & Analytics #

Method Description
validateLicense() Validate current license
trackMAU(userId) Track Monthly Active User

🎨 Filter Types #

FilterType.none           // No filter
FilterType.vintage        // Vintage film look
FilterType.cinematic      // Cinematic color grading
FilterType.blackWhite     // Black and white
FilterType.sepia          // Sepia tone
FilterType.warm           // Warm color temperature
FilterType.cool           // Cool color temperature
FilterType.vivid          // Vivid and saturated
FilterType.dramatic       // Dramatic high contrast
FilterType.noir           // Film noir style
FilterType.fade           // Faded colors

🎭 Effect Types #

EffectType.none            // No effect
EffectType.beautification  // Face beautification
EffectType.catEars         // Cat ears overlay
EffectType.glasses         // Glasses overlay

📱 Platform Support #

Platform Version Status
iOS 13.0+ ✅ Supported
Android API 24+ (7.0+) ✅ Supported
Web - ❌ Not supported
Desktop - ⚠️ Future

🔐 License Tiers #

Tier MAU Limit Filters Effects Editing Price
Starter 10,000 Basic (5) None Basic $99/mo
Pro 100,000 All (11) All All $299/mo
Enterprise Unlimited All (11) All All Custom

📖 Documentation #


🎨 Ready-to-Use Widgets #

Turbina provides production-ready widgets for instant integration:

TurbinaCamera - Complete Camera Widget #

TurbinaCamera(
  showControls: true,        // Built-in controls
  showFilterButton: true,    // Filter picker
  showEffectButton: true,    // Effect picker
  showRecordButton: true,    // Record button
  onCameraReady: () => print('Ready!'),
)

VideoEditor - Video Editing Widget #

VideoEditor(
  videoPath: '/path/to/video.mp4',
  onExportComplete: (path) => print('Exported: $path'),
)

Platform Utilities #

// Platform detection
print('Platform: ${PlatformInfo.platformName}');
print('Processors: ${DeviceInfo.numberOfProcessors}');
print('Recommended FPS: ${DeviceInfo.recommendedFPS}');

// Performance monitoring
final monitor = PerformanceMonitor();
await monitor.measureAsync('video_process', () async {
  await turbina.trimVideo(...);
});
print('Average: ${monitor.getAverageDurationMs('video_process')} ms');

💡 Examples #

Check out the example folders for complete demos:

  • /example - Basic example with core features
  • /example_complete - Complete app with:
    • TurbinaCamera widget demo
    • VideoEditor widget demo
    • Image processing demo
    • Performance benchmarks
    • All features showcased

Run the complete example:

cd sdk/flutter/example_complete
flutter run

🧪 Testing #

Widget Tests #

cd sdk/flutter
flutter test test/widget_test.dart

E2E Tests #

flutter drive --target=test_driver/app.dart

Performance Benchmarks #

dart run benchmark/performance_benchmark.dart

🐛 Troubleshooting #

iOS Build Issues #

If you encounter iOS build issues, add to ios/Podfile:

platform :ios, '13.0'

Android Build Issues #

Ensure minSdkVersion is 24+ in android/app/build.gradle:

android {
    defaultConfig {
        minSdkVersion 24
    }
}

🤝 Support #


📄 License #

This SDK requires a commercial license. Visit turbina.live to get started.

Copyright © 2025 Turbina, Inc. All rights reserved.


Made with ❤️ by Turbina

WebsiteDocumentationDashboard

1
likes
130
points
561
downloads

Publisher

unverified uploader

Weekly Downloads

Turbina Video SDK for Flutter - Professional video processing, editing, and AR effects with native C++ performance via FFI

Repository (GitHub)
View/report issues

Topics

#video #video-editing #ar #face-tracking #camera

Documentation

API reference

License

unknown (license)

Dependencies

archive, crypto, ffi, flutter, http, path_provider, plugin_platform_interface

More

Packages that depend on turbina_sdk

Packages that implement turbina_sdk