pro_video_editor 0.1.0
pro_video_editor: ^0.1.0 copied to clipboard
A Flutter video editor: Seamlessly enhance your videos with user-friendly editing features.
pro_video_editor is an upcoming Flutter package designed to provide advanced video editing capabilities. This package will serve as an extension for the pro_image_editor.
Table of contents #
- π· Preview
- β¨ Features
- π§ Setup
- β Usage
- π Sponsors
- π¦ Included Packages
- π€ Contributors
- π License
- π Notices
Preview #
| Main-Editor | Paint-Editor |
|---|---|
|
|
Features #
| Method | Android | iOS | macOS | Windows | Linux | Web |
|---|---|---|---|---|---|---|
Metadata |
β | β | β | β | β οΈ | β |
Thumbnails |
β | β | β | β | β | β |
KeyFrames |
β | β | β | β | β | β |
Rotate |
β | β | β | β | β | π« |
Flip |
β | β | β | β | β | π« |
Crop |
β | β | β | β | β | π« |
Scale |
β | β | β | β | β | π« |
Trim |
β | β | β | β | β | π« |
Playback-Speed |
β | β | β | β | β | π« |
Remove-Audio |
β | β | β | β | β | π« |
Overlay Layers |
β | β | β | β | β | π« |
Multiple ColorMatrix 4x5 |
β | β | β | β | β | π« |
Blur background |
π§ͺ | π§ͺ | π§ͺ | β | β | π« |
Custom Audio Tracks |
β | β | β | β | β | π« |
Merge Videos |
β | β | β | β | β | π« |
Censor-Layers "Pixelate" |
β | β | β | β | β | π« |
Legend
- β Supported with Native-Code
- β οΈ Supported with Native-Code but not tested
- π§ͺ Supported but visual output can differs from Flutter
- β Not supported but planned
- π« Not supported and currently not planned
Setup #
Android, iOS, macOS, Linux, Windows, Web
No additional setup required.
Usage #
Metadata
VideoMetadata result = await ProVideoEditor.instance.getMetadata(
video: EditorVideo.asset('assets/my-video.mp4'),
);
Thumbnails
List<Uint8List> result = await ProVideoEditor.instance.getThumbnails(
ThumbnailConfigs(
video: EditorVideo.asset('assets/my-video.mp4'),
outputFormat: ThumbnailFormat.jpeg,
timestamps: const [
Duration(seconds: 10),
Duration(seconds: 15),
Duration(seconds: 22),
],
outputSize: const Size(200, 200),
boxFit: ThumbnailBoxFit.cover,
),
);
Keyframes
List<Uint8List> result = await ProVideoEditor.instance.getKeyFrames(
KeyFramesConfigs(
video: EditorVideo.asset('assets/my-video.mp4'),
outputFormat: ThumbnailFormat.jpeg,
maxOutputFrames: 20,
outputSize: const Size(200, 200),
boxFit: ThumbnailBoxFit.cover,
),
);
Render
/// Every option except videoBytes is optional.
var data = RenderVideoModel(
video: EditorVideo.asset('assets/my-video.mp4'),
// Other supported constructors:
// video: EditorVideo.file(File('/path/to/video.mp4')),
// video: EditorVideo.network('https://example.com/video.mp4'),
// video: EditorVideo.memory(videoBytes),
imageBytes: imageBytes, /// A image "Layer" which will overlay the video.
outputFormat: VideoOutputFormat.mp4,
transform: const ExportTransform(
flipX: true,
flipY: true,
x: 10,
y: 20,
width: 300,
height: 400,
rotateTurns: 3,
scaleX: .5,
scaleY: .5,
),
colorMatrixList: [
[ 1.0, 0.0, 0.0, 0.0, 50.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ],
[ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ],
],
enableAudio: false,
playbackSpeed: 2,
startTime: const Duration(seconds: 5),
endTime: const Duration(seconds: 20),
blur: 10,
);
Uint8List result = await ProVideoEditor.instance.renderVideo(data);
Sponsors #
Included Packages #
A big thanks to the authors of these amazing packages.
- Packages created by the Dart team:
Contributors #
Made with contrib.rocks.