Supported providers
| Provider | Auth | Join | Recordings | Transcript |
|---|---|---|---|---|
| BBB | sharedSecret | iframe | Yes, native API | Text provided |
| Zoom | Server-to-Server OAuth | new tab | Webhook + cron | VTT auto |
| Teams | Client Credentials | new tab | Graph API + cron | VTT auto |
| Google Meet | OAuth + Calendar API | new tab | Calendar API + cron | Manual in Meet |
Adapter pattern
resolveVideoProvider(tenantId, liveClass?) cascades:
liveClass.videoProvider(if specified)VideoProviderConfig.isDefaultTenant.config.bbb(legacy backward compat)- BBB env vars (global fallback)
Webhooks and recording sync
POST /api/webhooks/video/zoom— meeting events + recording.completedPOST /api/webhooks/video/teams— Graph notificationsGET /api/cron/recording-sync— polling every 15min as fallback
Credentials
Stored in VideoProviderConfig with AES-256-GCM. Unique: [tenantId, provider].
Limitations
- BBB: needs self-hosted instance (or managed BBB provider). Cost: $20-200/month.
- Zoom: duration limit per tier (free=40min, paid=unlimited).
- Teams: endMeeting not supported via API.
- Google Meet: recording/transcription started manually by host.
- Streaming to YouTube/Twitch: not natively supported.