volorio_rtc 0.2.2
volorio_rtc: ^0.2.2 copied to clipboard
Volorio-branded Flutter RTC client for voice, video, screen share, heartbeat, and usage cutoff.
volorio_rtc #
Volorio Flutter RTC SDK for voice calls, video calls, live rooms, screen share, data messages, and participant-minute billing heartbeat.
Application code imports Volorio APIs only. The underlying media provider is an internal implementation detail of this package.
Keywords #
Flutter RTC, Flutter WebRTC, voice chat SDK, video call SDK, audio room SDK, live streaming SDK, screen sharing, realtime communication, Volorio.
Install #
dependencies:
volorio_rtc: ^0.2.2
Join a room #
The session must be created by your backend with volorio_server.
import 'package:volorio_core/volorio_core.dart';
import 'package:volorio_rtc/volorio_rtc.dart';
final rtc = VolorioRtcClient();
await rtc.join(
VolorioRoomSession.fromJson(sessionJsonFromYourBackend),
);
await rtc.enableMicrophone(true);
await rtc.enableCamera(true);
Video quality profiles #
Use setCameraEnabled when you need an explicit capture and encoder profile.
The default mobile profile is 720p/30 FPS. Full HD 60 FPS is available for
devices, network paths, API key quality grants, and SFU configuration that can
carry it.
await rtc.setCameraEnabled(
true,
profile: VolorioVideoProfiles.fullHd60,
);
await rtc.setPublishVideoProfile(VolorioVideoProfiles.mobile720p30);
Available built-in profiles:
VolorioVideoProfiles.low: 180p/15 FPSVolorioVideoProfiles.medium: 360p/30 FPSVolorioVideoProfiles.mobile720p30: 720p/30 FPSVolorioVideoProfiles.fullHd30: 1080p/30 FPSVolorioVideoProfiles.fullHd60: 1080p/60 FPS
The default simulcast ladder publishes mobile-safe layers for SFU selection:
- 180p/15 FPS
- 360p/30 FPS
- 720p/30 FPS
Subscriber quality #
Use remote quality controls when a participant tile moves between small grid mode and fullscreen mode.
await rtc.setRemoteVideoQuality(
identity: 'remote_user_1',
quality: VolorioRemoteVideoQuality.low,
maxFps: 15,
);
await rtc.setRemoteVideoQuality(
identity: 'remote_user_1',
quality: VolorioRemoteVideoQuality.high,
maxFps: 60,
);
Video stats and watchdog #
Use videoStats for a live debug overlay and videoHealthEvents to react to
first frame, freeze, and recovery events.
rtc.videoStats.listen((stats) {
debugPrint('${stats.identity} ${stats.width}x${stats.height} '
'${stats.framesPerSecond}fps ${stats.bitrateKbps}kbps');
});
rtc.videoHealthEvents.listen((event) {
debugPrint('Video health: ${event.type} ${event.identity}');
});
Media controls #
await rtc.enableMicrophone(false);
await rtc.enableCamera(false);
await rtc.shareScreen(true);
await rtc.sendMessage('{"type":"room.ping"}');
await rtc.leave();
Billing and session cutoff #
volorio_rtc automatically calls the heartbeat URL returned by Volorio. If the
server responds with 401, 403, or 402, the SDK disconnects locally.
Common causes:
401: missing or invalid backend-created session.403: API key does not have the requested product or quality grant.402: no remaining monthly free minutes and insufficient wallet balance.
Mobile permissions #
Your Flutter app still needs platform-level microphone and camera permissions. Volorio handles the room/session API, but iOS and Android permission prompts are owned by your app.