voltkit_rtc 0.3.0
voltkit_rtc: ^0.3.0 copied to clipboard
Flutter SDK for VoltKit RTC: realtime audio and video rooms, in-room and standalone chat, and live broadcast publishing over WHIP.
0.3.0 #
- Video quality.
VideoPublishOptions(quality: VideoQuality.p1080 / p720 / p480).StreamClient.videoPolicysays what the project may publish (from the join result's newvideofield) andvideoQualitywhat is being sent. 1080p needs the project to allow it (it does during the free trial); asking for more publishes the highest allowed. - Layers follow the picture's real size. A picture too small for the layers asked for used to lose its top ones, so viewers got half the resolution; now 480p is sent as two layers and small pictures as fewer.
- Fix:
publish()captures 720p by default. It asked the camera for 640x360, so the default broadcast was 360p while the docs said 720p. It now captures at the quality being published. topBitrateis optional: unset, it follows the picture's size (2.5 Mbps at 1080p, 1.8 Mbps at 720p, 750 kbps at 480p). Setting it works as before.- New exports:
VideoQuality,VideoPolicy,layerBitrate.
0.2.1 #
onUsageLimitonStreamClientandChatClient, withUsageLimit(reason,graceSeconds,endsAt): the project ran out of minutes or hit a daily or monthly usage limit, and the session will be ended atendsAtunless it is topped up. Show it to the user.- A session the server ended on purpose (WebSocket close code 4003, after
roomClosedor a finalusageLimit) is final and is not reconnected. - Fix: a promoted viewer now moves to a new connection with the token for its new role. Before, it kept the old connection and its viewer token, so the promotion did nothing and publishing was refused.
- Fix: after a reconnect, the client no longer subscribes to its own tracks (the room state lists them), which played a host a delayed copy of itself.
- A publisher who is demoted stops publishing and releases the camera and microphone (the server now closes a demoted publisher's tracks itself).
- After a reconnect, the client uses the fresh TURN credentials from the new join instead of the original ones, which expire after 12 hours by default.
RpcError.isTerminalnow matches the codes the server sends:no-room,wrong-tenant,quota-exhausted,daily-limit-reachedandmonthly-limit-reachedstop reconnecting instead of retrying.
0.2.0 #
First release on pub.dev. The package was previously distributed by path as
stream_client; only the package name changed, so migrating is the dependency
line and the import.
-
Works on current Flutter and Android. Built on
flutter_webrtc1.6. The mediasoup client is now included in the package with fixes that publishing from a real Android device needed: a race between the transport and its peer connection, simulcast RID parsing, a crash when an encoding has no scalability mode, and header extension IDs current libwebrtc rejected. The previous dependency onmediasoup_client_flutter0.8.5, which no longer builds, is gone. -
micEnabledandcamEnabledgetters, as in the browser SDK. -
Simulcast layers send three temporal layers each (
L1T3). -
Chat.
StreamClientgainssendMessage,getMessages,deleteMessage,muteChat,setTypingandgetChatState, withonMessage,onMessageDeleted,onChatMutedandonTyping. Direct messages, ephemeral messages and paged history are supported. -
ChatClientfor chat with no media, on its own connection. -
BroadcastPublisherfor publishing a live broadcast over WHIP, H.264 only so the media server never has to transcode. -
Music. Tracks now say what they carry (
RemoteTrack.source:mic,music,camera,screen), so a viewer app can give music its own volume.publishMusic,setMusicEnabledandstopMusicpublish music as a track of its own;setMicEnabledno longer touches it.onTrackMutedgainssource.
0.1.0 #
Rooms, roles, moderation, exclusive slots, simulcast publishing and reconnection. Not published.