A flutter package for Android for applying OpenGL filters to video.
Usage
How to generate and use a bunch of filters
How to add custom filters
Export & save video
import 'package:flutter_gpu_video_filters/flutter_gpu_video_filters.dart';
final inputSource = AssetInputSource('demo.mp4');
final output = File('result.mp4');
final configuration = GPUGrayScaleConfiguration();
final processStream = configuration.exportVideoFile(VideoExportConfig(AssetInputSource(asset), output));
await for (final progress in processStream) {
debugPrint('Exporting file ${(progress * 100).toInt()}%');
}
GPUVideoNativePreview example
import 'package:flutter_gpu_video_filters/flutter_gpu_video_filters.dart';
class PreviewPage extends StatefulWidget {
const PreviewPage({Key? key}) : super(key: key);
@override
State<PreviewPage> createState() => _PreviewPageState();
}
class _PreviewPageState extends State<PreviewPage> {
late GPUVideoPreviewController configuration;
late final GPUGrayScaleConfiguration controller;
late final GPUVideoPreviewParams previewParams;
bool paramsReady = false;
@override
void initState() {
super.initState();
_prepare().whenComplete(() {
setState(() {});
});
}
Future<void> _prepare() async {
configuration = GPUGrayScaleConfiguration();
previewParams = await GPUVideoPreviewParams.create(configuration);
paramsReady = true;
}
@override
void dispose() {
controller.dispose();
configuration.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return paramsReady
? GPUVideoNativePreview(
params: previewParams,
configuration: configuration,
onViewCreated: (controller, outputSizeStream) async {
this.controller = controller;
await this.controller.setVideoAsset(_assetPath);
await for (final size in outputSizeStream) {
setState(() {});
}
},
)
: const Offstage();
}
}
Additional information
Support status of GPUImage for Android shaders
| Status | Name | Display Name |
|---|---|---|
| :white_check_mark: | GPU3x3ConvolutionConfiguration | 3x3 Convolution |
| :white_check_mark: | GPUAddBlendConfiguration | Add Blend |
| :white_check_mark: | GPUAlphaBlendConfiguration | Alpha Blend |
| :x: | GPUBilateralConfiguration | Bilateral |
| :x: | GPUBoxBlurConfiguration | Box Blur |
| :white_check_mark: | GPUBrightnessConfiguration | Brightness |
| :white_check_mark: | GPUBulgeDistortionConfiguration | Bulge Distortion Configuration |
| :white_check_mark: | GPUCGAColorspaceConfiguration | CGA Colorspace |
| :white_check_mark: | GPUChromaKeyBlendConfiguration | Chroma Key Blend |
| :white_check_mark: | GPUColorBalanceConfiguration | Color Balance |
| :white_check_mark: | GPUColorBlendConfiguration | Color Blend |
| :white_check_mark: | GPUColorBurnBlendConfiguration | Color Burn Blend |
| :white_check_mark: | GPUColorDodgeBlendConfiguration | Color Dodge Blend |
| :white_check_mark: | GPUColorInvertConfiguration | Color Invert |
| :white_check_mark: | GPUColorMatrixConfiguration | Color Matrix |
| :white_check_mark: | GPUContrastConfiguration | Contrast |
| :white_check_mark: | GPUCrosshatchConfiguration | Crosshatch |
| :white_check_mark: | GPUDarkenBlendConfiguration | Darken Blend |
| :white_check_mark: | GPUDifferenceBlendConfiguration | Difference Blend |
| :white_check_mark: | GPUDirectionalSobelEdgeDetectionConfiguration | Directional Sobel Edge Detection |
| :white_check_mark: | GPUDissolveBlendConfiguration | Dissolve Blend |
| :white_check_mark: | GPUDivideBlendConfiguration | Divide Blend |
| :white_check_mark: | GPUEmbossConfiguration | Emboss |
| :white_check_mark: | GPUExposureConfiguration | Exposure |
| :white_check_mark: | GPUFalseColorConfiguration | False Color |
| :white_check_mark: | GPUGammaConfiguration | Gamma |
| :x: | GPUGaussianBlurConfiguration | Gaussian Blur |
| :white_check_mark: | GPUGlassSphereConfiguration | Glass Sphere |
| :white_check_mark: | GPUGrayScaleConfiguration | Gray Scale |
| :white_check_mark: | GPUHALDLookupTableConfiguration | HALD Lookup Table |
| :white_check_mark: | GPUHalftoneConfiguration | Halftone |
| :white_check_mark: | GPUHardLightBlendConfiguration | Hard Light Blend |
| :white_check_mark: | GPUHazeConfiguration | Haze |
| :white_check_mark: | GPUHighlightShadowConfiguration | Highlight Shadow |
| :white_check_mark: | GPUHueBlendConfiguration | Hue Blend |
| :white_check_mark: | GPUHueConfiguration | Hue |
| :white_check_mark: | GPUInvertConfiguration | Invert |
| :white_check_mark: | GPUKuwaharaConfiguration | Kuwahara |
| :white_check_mark: | GPULaplacianConfiguration | Laplacian |
| :white_check_mark: | GPULevelsConfiguration | Levels |
| :white_check_mark: | GPULightenBlendConfiguration | Lighten Blend |
| :white_check_mark: | GPULinearBurnBlendConfiguration | Linear Burn Blend |
| :white_check_mark: | GPULuminanceThresholdConfiguration | Luminance Threshold |
| :white_check_mark: | GPULuminanceConfiguration | Luminance |
| :white_check_mark: | GPULuminosityBlendConfiguration | Luminosity Blend |
| :white_check_mark: | GPUMonochromeConfiguration | Monochrome |
| :white_check_mark: | GPUMultiplyBlendConfiguration | Multiply Blend |
| :white_check_mark: | GPUNonMaximumSuppressionConfiguration | Non Maximum Suppression |
| :white_check_mark: | GPUNormalBlendConfiguration | Normal Blend |
| :interrobang: | GPUOpacityConfiguration | Opacity |
| :white_check_mark: | GPUOverlayBlendConfiguration | Overlay Blend |
| :white_check_mark: | GPUOverlayConfiguration | Overlay |
| :white_check_mark: | GPUPixelationConfiguration | Pixelation |
| :white_check_mark: | GPUPosterizeConfiguration | Posterize |
| :white_check_mark: | GPURGBConfiguration | RGB |
| :white_check_mark: | GPUSaturationBlendConfiguration | Saturation Blend |
| :white_check_mark: | GPUSaturationConfiguration | Saturation |
| :white_check_mark: | GPUScreenBlendConfiguration | Screen Blend |
| :white_check_mark: | GPUSepiaToneConfiguration | Sepia Tone |
| :white_check_mark: | GPUSepiaConfiguration | Sepia |
| :white_check_mark: | GPUSharpenConfiguration | Sharpen |
| :white_check_mark: | GPUSobelThresholdConfiguration | Sobel Threshold |
| :white_check_mark: | GPUSoftLightBlendConfiguration | Soft Light Blend |
| :white_check_mark: | GPUSolarizeConfiguration | Solarize |
| :white_check_mark: | GPUSourceOverBlendConfiguration | Source Over Blend |
| :white_check_mark: | GPUSphereRefractionConfiguration | Sphere Refraction |
| :white_check_mark: | GPUSquareLookupTableConfiguration | Square Lookup Table |
| :white_check_mark: | GPUSubtractBlendConfiguration | Subtract Blend |
| :white_check_mark: | GPUSwirlConfiguration | Swirl |
| :white_check_mark: | GPUToneCurveConfiguration | Tone Curve |
| :white_check_mark: | GPUToonConfiguration | Toon |
| :white_check_mark: | GPUVibranceConfiguration | Vibrance |
| :white_check_mark: | GPUVignetteConfiguration | Vignette |
| :white_check_mark: | GPUWatermarkConfiguration | Watermark |
| :white_check_mark: | GPUWeakPixelInclusionConfiguration | Weak Pixel Inclusion |
| :white_check_mark: | GPUWhiteBalanceConfiguration | WhiteBalance |
| :white_check_mark: | GPUZoomBlurConfiguration | Zoom Blur |
Examples
- Big Flutter Filters Demo - big example of how to use filters and.