flutter_banuba_agora_ar 0.1.0
flutter_banuba_agora_ar: ^0.1.0 copied to clipboard
Bridge plugin that pipes Banuba AR-processed frames directly into Agora RTC as an external video source. One-liner integration for AR filters in live streams.
flutter_banuba_agora_ar #
A bridge plugin that pipes Banuba AR-processed frames directly into Agora RTC as an external video source. One-liner integration for AR filters in live streams.
Features #
- ๐ Automatic frame forwarding from Banuba โ Agora
- ๐ญ Convenience methods for effect loading and camera switching
- ๐ Frame count tracking
- ๐งน Clean start/stop lifecycle
Getting Started #
1. Install #
dependencies:
flutter_banuba_agora_ar: ^0.1.0
# This automatically pulls flutter_banuba_ar and agora_rtc_engine
2. Usage #
import 'package:flutter_banuba_agora_ar/flutter_banuba_agora_ar.dart';
import 'package:agora_rtc_engine/agora_rtc_engine.dart';
// 1. Initialize Banuba
final banuba = BanubaARController();
await banuba.initialize(token: 'YOUR_BANUBA_TOKEN');
// 2. Initialize Agora with external video source
final agoraEngine = createAgoraRtcEngine();
await agoraEngine.initialize(RtcEngineContext(appId: 'YOUR_AGORA_APP_ID'));
await agoraEngine.getMediaEngine().setExternalVideoSource(
enabled: true,
useTexture: false,
);
// 3. Create the bridge โ this is all you need!
final bridge = BanubaAgoraBridge(
banuba: banuba,
agoraEngine: agoraEngine,
);
// 4. Start capture and forwarding
await banuba.startCapture();
await bridge.startForwarding();
// AR-processed frames now flow into Agora automatically!
// 5. Load effects
await bridge.loadEffect('TrollGrandma');
// 6. Stop when done
bridge.stopForwarding();
await banuba.stopCapture();
bridge.dispose();
How It Works #
The bridge subscribes to BanubaARController.frameStream and pushes each frame to Agora via MediaEngine.pushVideoFrame(). It handles:
- RGBA (Android) and BGRA (iOS) format detection
- Frame timestamping
- Error resilience (frame push failures are non-fatal)
License #
MIT License. See LICENSE for details.