flutter_gpu_video_filters 0.0.15 copy "flutter_gpu_video_filters: ^0.0.15" to clipboard
flutter_gpu_video_filters: ^0.0.15 copied to clipboard

PlatformAndroid

Image filters based on OpenGL fragment shaders with useful video preview widgets

Flutter

Pub codecov build Star on Github License: MIT

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
GPU3x3ConvolutionConfiguration 3x3 Convolution
GPUAddBlendConfiguration Add Blend
GPUAlphaBlendConfiguration Alpha Blend
GPUBilateralConfiguration Bilateral
GPUBoxBlurConfiguration Box Blur
GPUBrightnessConfiguration Brightness
GPUBulgeDistortionConfiguration Bulge Distortion Configuration
GPUCGAColorspaceConfiguration CGA Colorspace
GPUChromaKeyBlendConfiguration Chroma Key Blend
GPUColorBalanceConfiguration Color Balance
GPUColorBlendConfiguration Color Blend
GPUColorBurnBlendConfiguration Color Burn Blend
GPUColorDodgeBlendConfiguration Color Dodge Blend
GPUColorInvertConfiguration Color Invert
GPUColorMatrixConfiguration Color Matrix
GPUContrastConfiguration Contrast
GPUCrosshatchConfiguration Crosshatch
GPUDarkenBlendConfiguration Darken Blend
GPUDifferenceBlendConfiguration Difference Blend
GPUDirectionalSobelEdgeDetectionConfiguration Directional Sobel Edge Detection
GPUDissolveBlendConfiguration Dissolve Blend
GPUDivideBlendConfiguration Divide Blend
GPUEmbossConfiguration Emboss
GPUExposureConfiguration Exposure
GPUFalseColorConfiguration False Color
GPUGammaConfiguration Gamma
GPUGaussianBlurConfiguration Gaussian Blur
GPUGlassSphereConfiguration Glass Sphere
GPUGrayScaleConfiguration Gray Scale
GPUHALDLookupTableConfiguration HALD Lookup Table
GPUHalftoneConfiguration Halftone
GPUHardLightBlendConfiguration Hard Light Blend
GPUHazeConfiguration Haze
GPUHighlightShadowConfiguration Highlight Shadow
GPUHueBlendConfiguration Hue Blend
GPUHueConfiguration Hue
GPUInvertConfiguration Invert
GPUKuwaharaConfiguration Kuwahara
GPULaplacianConfiguration Laplacian
GPULevelsConfiguration Levels
GPULightenBlendConfiguration Lighten Blend
GPULinearBurnBlendConfiguration Linear Burn Blend
GPULuminanceThresholdConfiguration Luminance Threshold
GPULuminanceConfiguration Luminance
GPULuminosityBlendConfiguration Luminosity Blend
GPUMonochromeConfiguration Monochrome
GPUMultiplyBlendConfiguration Multiply Blend
GPUNonMaximumSuppressionConfiguration Non Maximum Suppression
GPUNormalBlendConfiguration Normal Blend
⁉️ GPUOpacityConfiguration Opacity
GPUOverlayBlendConfiguration Overlay Blend
GPUOverlayConfiguration Overlay
GPUPixelationConfiguration Pixelation
GPUPosterizeConfiguration Posterize
GPURGBConfiguration RGB
GPUSaturationBlendConfiguration Saturation Blend
GPUSaturationConfiguration Saturation
GPUScreenBlendConfiguration Screen Blend
GPUSepiaToneConfiguration Sepia Tone
GPUSepiaConfiguration Sepia
GPUSharpenConfiguration Sharpen
GPUSobelThresholdConfiguration Sobel Threshold
GPUSoftLightBlendConfiguration Soft Light Blend
GPUSolarizeConfiguration Solarize
GPUSourceOverBlendConfiguration Source Over Blend
GPUSphereRefractionConfiguration Sphere Refraction
GPUSquareLookupTableConfiguration Square Lookup Table
GPUSubtractBlendConfiguration Subtract Blend
GPUSwirlConfiguration Swirl
GPUToneCurveConfiguration Tone Curve
GPUToonConfiguration Toon
GPUVibranceConfiguration Vibrance
GPUVignetteConfiguration Vignette
GPUWatermarkConfiguration Watermark
GPUWeakPixelInclusionConfiguration Weak Pixel Inclusion
GPUWhiteBalanceConfiguration WhiteBalance
GPUZoomBlurConfiguration Zoom Blur

Examples #

Maintainers #

16
likes
160
pub points
73%
popularity

Publisher

unverified uploader

Image filters based on OpenGL fragment shaders with useful video preview widgets

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

collection, flutter, flutter_gpu_filters_interface, plugin_platform_interface

More

Packages that depend on flutter_gpu_video_filters