Last updated:
0 purchases
media tool flutter
Media Tool Flutter #
Video, image and audio processing via native platform code.
🚧 WIP 🚧 #
Only Apple (iOS & macOS) support is implemented via native code yet.
About #
Flutter plugin for advanced media manipulation using native platform code. Supported media types are video, audio and image.
Native Frameworks #
Platform
Framework
Apple
MediaToolSwift
Android
MediaCodec*
Windows & Linux
OpenCL*
* Pull requests with implementation of MediaToolPlatform are welcome!
Video #
Features: #
Compress with multiple codecs
Resize
Frame rate adjustment
Audio track manipulataion
Alpha channel and HDR handling
Slow motion support
Metadata preserving
Hardware acceleration
Thumbnails extraction
Video information gathering
Progress and cancellation
Codecs #
Video: H.264, H.265/HEVC and ProRes.
Audio: AAC, Opus and FLAC.
Example #
// Compress video file
final task = VideoTool.compress(
id: id, // unique id
path: path,
destination: destination,
// Video
videoSettings: const VideoSettings(
codec: VideoCodec.h264,
bitrate: 2000000, // 2 Mbps
size: Size(1280.0, 1280.0), // size to fit in
// quality, frame rate, atd.
),
// Audio
skipAudio: false,
audioSettings: const AudioSettings(
codec: AudioCodec.opus,
bitrate: 96000, // 96 Kbps
// sample rate, quality, atd.
),
// Metadata and file options
skipMetadata: false,
overwrite: true,
deleteOrigin: false
);
// State notifier
task.events.listen(print);
// Cancellation
task.cancel();
copied to clipboard
Image #
Features: #
Convert with multiple formats
Resize and crop
Frame rate adjustment
Animated image sequences support
Alpha channel and HDR handling
Metadata and orientation preserving
Image information gathering
Formats: #
JPEG
PNG and APNG
GIF
TIFF
BMP
WEBP
HEIF
Example #
// Convert image file
final metadata = await ImageTool.compress(
path: path,
destination: destination,
settings: const ImageSettings(
format: ImageFormat.png,
size: Size(1280.0, 1280.0),
crop: false, // crop or fit
// frame rate, quality, alpha channel, background color, atd.
),
skipMetadata: false,
overwrite: true,
deleteOrigin: false
);
copied to clipboard
Audio #
Features: #
Compress with multiple codecs
Metadata preserving
Hardware acceleration
Audio information gathering
Progress and cancellation
Codecs: #
AAC
Opus
FLAC
Example #
// Compress audio file
final task = AudioTool.compress(
id: id, // unique id
path: path,
destination: destination,
settings: const AudioSettings(
codec: AudioCodec.opus,
bitrate: 96000, // 96 Kbps
// sample rate, quality, atd.
),
skipMetadata: false,
overwrite: true,
deleteOrigin: false
);
// State notifier
task.events.listen(print);
// Cancellation
task.cancel();
copied to clipboard
Internally #
Each plugin methods which run platform code do support multiple parallel executions, each of execution has it's own progress, cancellation and error handling. Main tests stored at integration_test.
Benchmarks #
Video #
Plugin Name
Time
media_tool_darwin
1x
video_compress
1x
light_compressor
1.5-2x
media_tool_ffmpeg
8-12x
Video tests were executed on macOS (Apple Silicon) using H.264/AAC/MP4 with 1280x720 and 1920x1080 resolutions.
Image #
Plugin Name
Time
media_tool_darwin
1x
media_tool_ffmpeg
3-5x
image
10x
Image tests were executed on macOS (Apple Silicon) using PNG and JPEG.
License #
The Plugin is licensed under the MIT. The platform implementations may have their own licenses:
MediaToolSwift - Mozilla Public License 2.0
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.