Flutter Web + flutter_webrtc
- Video
- Web
The effects_sdk plugin wraps the Web Video Effects SDK: give it a MediaStream from flutter_webrtc, get a processed MediaStream back.
Add background blur and replacement, beautification and auto-framing to Flutter video apps on Android, iOS and the web, and AI noise cancellation to Flutter Web — with ready plugins built on flutter_webrtc.
The effects_sdk plugin wraps the Web Video Effects SDK: give it a MediaStream from flutter_webrtc, get a processed MediaStream back.
A fork of the LiveKit Flutter SDK adds the Video Effects SDK to LocalVideoTrack. On Android and iOS it uses the native SDKs, on the web the Web SDK.
The audio_effects_sdk plugin runs the Audio Effects SDK on a flutter_webrtc MediaStream: AI noise suppression with speed, balanced and quality presets.
The plugins follow the Web SDK flow: put a MediaStream in, wait for onReady, run, and use the processed stream. In the LiveKit fork the effects are methods of LocalVideoTrack.
// web/index.html: <script src="https://effectssdk.ai/sdk/web/{VERSION}/tsvb-web.js"></script>
// pubspec.yaml: effects_sdk: { git: { url: https://github.com/EffectsSDK/flutter-plugin.git } }
final effectsSDK = EffectsSDK('YOUR_CUSTOMER_ID');
effectsSDK.useStream(cameraStream);
final outputStream = effectsSDK.getStream();
effectsSDK.onReady = () {
effectsSDK.run();
effectsSDK.setBlur(60);
};
// pubspec.yaml: livekit_client from github.com/EffectsSDK/livekit-client-sdk-flutter
final videoTrack = await LocalVideoTrack.createCameraTrack(
CameraCaptureOptions(effectsSdkRequired: true),
);
await videoTrack.start();
final status = await videoTrack.auth('YOUR_CUSTOMER_ID');
if (status == AuthStatus.active) {
await videoTrack.setPipelineMode(PipelineMode.blur);
await videoTrack.setBlurPower(0.6);
}
// web/index.html: <script crossorigin="anonymous" src="https://effectssdk.ai/sdk/audio/dev/{VERSION}/atsvb-web.js"></script>
// pubspec.yaml: audio_effects_sdk: { git: { url: https://github.com/EffectsSDK/audio-flutter-wrapper } }
final audioSDK = AudioEffectsSDK('YOUR_CUSTOMER_ID');
audioSDK.useStream(micStream);
audioSDK.onReady = () {
audioSDK.run();
final cleanStream = audioSDK.getStream();
};
Using LiveKit? See LiveKit integration.
Video effects: Android, iOS and the web through the LiveKit Flutter fork, and the web through the flutter_webrtc plugin. Audio noise cancellation: Flutter Web through the audio_effects_sdk plugin.
Use the native Android and iOS SDKs through a platform channel. The LiveKit fork is a good reference: it connects the native camera pipelines to Flutter on both platforms. Tell us about your setup and we will help.
The Flutter audio plugin currently targets the web. On Android and iOS, call the native Audio Effects SDK (Maven ai.effectssdk:audio, Swift Package AudioEffectsSDK) through a platform channel.
Background blur and replacement, beautification, auto-framing, color correction, layouts, lower thirds and overlays in the web plugin; the LiveKit fork exposes the native pipeline modes on mobile.
Tell us your platforms and how you capture video and audio. We help with the integration.
Ready to build? Open the Developer Portal and start a free trial.