flutter_video_compressor 1.0.0
flutter_video_compressor: ^1.0.0 copied to clipboard
A Flutter plugin that provides video, image, and audio compression capabilities using native compression algorithms from the React Native Compressor library.
Flutter Video Compressor #
A Flutter plugin that provides video, image, and audio compression capabilities using native compression algorithms from the React Native Compressor library.
Features #
- 🎥 Video Compression: Compress videos with quality control and format options
- 🖼️ Image Compression: Compress images with size and quality settings
- 🎵 Audio Compression: Compress audio files with quality control
- 📱 Native Performance: Uses native compression algorithms for optimal performance
- 🔄 Progress Tracking: Real-time compression progress updates
- 📊 Metadata Support: Extract and preserve media metadata
- 🎬 Thumbnail Generation: Create video thumbnails
- 💾 Cache Management: Built-in cache management system
Getting Started #
Installation #
Add this to your package's pubspec.yaml file:
dependencies:
flutter_video_compressor: ^1.0.0
Import #
import 'package:flutter_video_compressor/flutter_video_compressor.dart';
Usage #
Basic Compression #
// Compress a video file
final result = await FlutterVideoCompressor.compressMedia(
mediaFile,
VideoCompressionOptions(
quality: 'medium',
maxWidth: 1280,
maxHeight: 720,
outputFormat: 'mp4',
),
onProgress: (progress) {
print('Compression progress: ${progress.toStringAsFixed(1)}%');
},
);
if (result.isSuccess) {
print('Compression completed!');
print('Original size: ${(result.originalFile.size / 1024 / 1024).toStringAsFixed(2)} MB');
print('Compressed size: ${(result.compressedFile.size / 1024 / 1024).toStringAsFixed(2)} MB');
print('Compression ratio: ${result.compressionRatio.toStringAsFixed(1)}%');
}
Batch Compression #
// Compress multiple files
final results = await FlutterVideoCompressor.compressBatch(
mediaFiles,
VideoCompressionOptions(quality: 'high'),
onProgress: (progress) {
print('Batch progress: ${progress.toStringAsFixed(1)}%');
},
);
Image Compression #
final result = await FlutterVideoCompressor.compressMedia(
imageFile,
ImageCompressionOptions(
quality: 80,
maxWidth: 1920,
maxHeight: 1080,
outputFormat: 'jpg',
),
);
Audio Compression #
final result = await FlutterVideoCompressor.compressMedia(
audioFile,
AudioCompressionOptions(
quality: 80,
outputFormat: 'mp3',
),
);
Metadata and Utilities #
// Get file metadata
final metadata = await FlutterVideoCompressor.getMetadata(filePath, MediaType.video);
// Create video thumbnail
final thumbnailPath = await FlutterVideoCompressor.createVideoThumbnail(
videoPath,
timeUs: 0,
maxWidth: 320,
maxHeight: 320,
);
// Clear cache
await FlutterVideoCompressor.clearCache();
API Reference #
Classes #
MediaFile: Represents a media file with metadataCompressionOptions: Base class for compression optionsVideoCompressionOptions: Video-specific compression optionsImageCompressionOptions: Image-specific compression optionsAudioCompressionOptions: Audio-specific compression optionsCompressionResult: Result of a compression operation
Methods #
compressMedia(): Compress a single media filecompressBatch(): Compress multiple media filescancelCompression(): Cancel an ongoing compressiongetMetadata(): Get metadata for a media filecreateVideoThumbnail(): Create a video thumbnailgetRealPath(): Get the real file pathclearCache(): Clear compression cache
Platform Support #
- ✅ Android: API level 21+ (Android 5.0+)
- ✅ iOS: iOS 12.0+
- ❌ Web: Not supported (requires native code)
- ❌ Desktop: Not supported (requires native code)
Requirements #
Android #
- Minimum SDK: 21
- Permissions:
READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
iOS #
- Minimum iOS version: 12.0
- Permissions: Photo Library access
Example #
Check out the example app for a complete working example.
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Credits #
This plugin wraps the native compression algorithms from the React Native Compressor library.
Issues and Feedback #
Please file issues and feature requests on the GitHub repository.