flutter_media_compress 1.1.0
flutter_media_compress: ^1.1.0 copied to clipboard
Powerful Flutter package to compress images, videos, audio, and documents with a unified API, batch processing, quality presets, FFmpeg audio, and auto detection.
flutter_media_compress #
A powerful Flutter package to compress images, videos, audio, and documents using a single unified API.
Supports both single and batch file compression with simple configuration and quality control.
Features #
Based only on implemented functionality in this package:
- Image compression
- Video compression
- Audio compression (FFmpeg based, output in
.m4a) - Document compression using gzip
- Single file compression
- Multiple file compression (batch)
- Automatic file type detection
- Quality presets (low, medium, high, ultra, custom)
- Custom output file path support
- Backup option before compression
- Compression statistics:
- Original size
- Compressed size
- Saved bytes
- Compression ratio
- Time taken
Installation #
Add this to your pubspec.yaml:
dependencies:
flutter_media_compress: ^1.1.0
Then run: #
flutter pub get
Import #
import 'dart:io';
import 'package:flutter_media_compress/flutter_media_compress.dart';
Single File Compression #
Image Compression #
final result = await FlutterMediaCompress.compressSingle(
file: File('photo.jpg'),
config: const CompressionConfig(
mediaType: MediaType.image,
),
);
Video Compression #
final result = await FlutterMediaCompress.compressSingle(
file: File('video.mp4'),
config: const CompressionConfig(
mediaType: MediaType.video,
),
);
Audio Compression #
final result = await FlutterMediaCompress.compressSingle(
file: File('audio.mp3'),
config: const CompressionConfig(
mediaType: MediaType.audio,
),
);
Document Compression #
final result = await FlutterMediaCompress.compressSingle(
file: File('file.pdf'),
config: const CompressionConfig(
mediaType: MediaType.document,
),
);
Multiple File Compression #
final results = await FlutterMediaCompress.compressMultiple(
files: [
File('image.jpg'),
File('video.mp4'),
File('audio.mp3'),
],
);
Automatic Media Detection #
- If mediaType is not provided, the package auto-detects the file type:
final result = await FlutterMediaCompress.compressSingle(
file: File('unknown_file'),
);
Compression Configuration #
CompressionConfig(
mediaType: MediaType.image,
quality: CompressQuality.medium,
customQuality: 80,
keepMetadata: true,
createBackup: true,
outputPath: '/custom/output/path.jpg',
);
Quality Presets #
- CompressQuality.low
- CompressQuality.medium
- CompressQuality.high
- CompressQuality.ultra
- CompressQuality.custom
Result Object #
- Returned type:
CompressionResult
Fields #
| Field | Description |
|---|---|
| originalFile | Source file |
| compressedFile | Output file |
| mediaType | Detected media type |
| originalSizeBytes | Size before compression |
| compressedSizeBytes | Size after compression |
| bytesSaved | Space saved |
| ratio | Compression ratio |
| timeTaken | Processing duration |
| isSuccess | Success or failure |
| errorMessage | Error if failed |
Output Formats #
| Input Type | Output |
|---|---|
| Image | Same format |
| Video | Same format |
| Audio | .m4a |
| Document | .gz |
Platform Support #
- Android
- iOS
- Web
- macOS
- Linux
- Web Web support depends on FFmpeg compatibility and browser file system access.
License #
MIT License