Flutter Web + flutter_webrtc
- Video
- Web
effects_sdk 插件封装了 Web Video Effects SDK:传入来自 flutter_webrtc 的 MediaStream,取回处理后的 MediaStream。
为 Android、iOS 和 Web 上的 Flutter 视频应用添加背景虚化与替换、美颜和自动取景,并为 Flutter Web 添加 AI 降噪——使用基于 flutter_webrtc 的现成插件。
effects_sdk 插件封装了 Web Video Effects SDK:传入来自 flutter_webrtc 的 MediaStream,取回处理后的 MediaStream。
LiveKit Flutter SDK 的一个分支为 LocalVideoTrack 加入了 Video Effects SDK。在 Android 和 iOS 上使用原生 SDK,在 Web 上使用 Web SDK。
audio_effects_sdk 插件在 flutter_webrtc 的 MediaStream 上运行 Audio Effects SDK:提供 speed、balanced 和 quality 预设的 AI 降噪。
插件遵循 Web SDK 的流程:传入 MediaStream,等待 onReady,运行,然后使用处理后的流。在 LiveKit 分支中,特效是 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();
};
在用 LiveKit?请参阅 LiveKit 集成。
视频特效:通过 LiveKit Flutter 分支支持 Android、iOS 和 Web,通过 flutter_webrtc 插件支持 Web。音频降噪:通过 audio_effects_sdk 插件支持 Flutter Web。
通过 platform channel 使用 Android 和 iOS 原生 SDK。LiveKit 分支是很好的参考:它在两个平台上都把原生摄像头管线接入了 Flutter。告诉我们你的方案,我们来协助。
Flutter 音频插件目前面向 Web。在 Android 和 iOS 上,请通过 platform channel 调用原生 Audio Effects SDK(Maven ai.effectssdk:audio、Swift Package AudioEffectsSDK)。
Web 插件提供背景虚化与替换、美颜、自动取景、调色、布局、字幕条和叠加层;LiveKit 分支在移动端提供原生管线的各种模式。