pro_video_editor 0.0.12
pro_video_editor: ^0.0.12 copied to clipboard
A Flutter video editor: Seamlessly enhance your videos with user-friendly editing features.
๐ง Under Development ๐ง #
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.
Platform Support #
| 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 |
๐งช | โ | โ | โ | โ | ๐ซ |
Censor-Layers "Pixelate" |
โ | โ | โ | โ | โ | ๐ซ |
Legend
- โ Supported with Native-Code
- ๐งช Supported but visual output can differs from Flutter
- โ Not supported but planned
- ๐ซ Not supported and currently not planned
Metadata #
VideoMetadata result = await VideoUtilsService.instance.getVideoInformation(
EditorVideo(
assetPath: 'assets/my-video.mp4',
/// byteArray: ,
/// file: ,
/// networkUrl: ,
),
);
Thumbnails #
List<Uint8List> result = await VideoUtilsService.instance.getThumbnails(
ThumbnailConfigs(
video: EditorVideo(
assetPath: 'assets/my-video.mp4',
/// byteArray: ,
/// file: ,
/// networkUrl: ,
),
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 VideoUtilsService.instance.getKeyFrames(
KeyFramesConfigs(
video: EditorVideo(
assetPath: 'assets/my-video.mp4',
/// byteArray: ,
/// file: ,
/// networkUrl: ,
),
outputFormat: ThumbnailFormat.jpeg,
maxOutputFrames: 20,
outputSize: const Size(200, 200),
boxFit: ThumbnailBoxFit.cover,
),
);
Render #
var video = EditorVideo(
assetPath: 'assets/my-video.mp4',
/// byteArray: ,
/// file: ,
/// networkUrl: ,
);
/// Every option except videoBytes is optional.
var data = RenderVideoModel(
videoBytes: await video.safeByteArray(),
/// A image "Layer" which will overlay the video.
imageBytes: imageBytes,
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 VideoUtilsService.instance.renderVideo(data);