videosdk 5.0.3
videosdk: ^5.0.3 copied to clipboard
Video SDK Flutter to simply integrate Audio & Video Calling API or Live Video Streaming API to your app with just a few lines of code.
5.0.3 #
Release Date: Nov 5th, 2026
Change Log:
- Fixed the camera video orientation issue to improve participants' visibility.
5.0.2 #
Release Date: 29th October 2026
dependencies:
videosdk: ^5.0.2
Breaking Changes:
- Remote video now starts at
VideoQuality.LOWinstead ofVideoQuality.HIGH. If your app wants full quality, callparticipant.setQuality(VideoQuality.HIGH)from theEvents.streamEnabledhandler.
5.0.1 #
Release Date: 16th October 2026
dependencies:
videosdk: ^5.0.1
What's New #
Events.videoQualityChangedis delivered on remote participants with{prevQuality, currentQuality}.
Fixed #
- Audio profiles use the right bitrate:
standard_stereo,high_qualityandhigh_quality_stereosend 64, 128 and 192 kbps (all three sent 32 kbps). (Android) - When nobody is speaking, the active speaker id is
nullinstead of the text"null", and so are the media relay fields. (Android) pauseAllStreams()andresumeAllStreams()without a kind now apply to all streams and fire one event withnull.- Joining in
RECV_ONLYmode with the mic and camera on no longer tries to publish. (Android) setQuality()can be retried after a failed call.Events.mediaRelayErrorfires. (iOS)setAudioDeviceChangeListenerreports the route actually in use right after join, once per switch. (iOS)- On the pre-call screen a connected Bluetooth or wired headset is kept instead of being switched to the speaker. (iOS)
- A "decryption failed" state now reaches your app.
startTranslation()while translation is running, andstopTranslation()while it is stopping or stopped, are refused straight away with an error.- Screen-share audio is reported as its own stream kind,
shareAudio, and no longer cuts the participant's microphone audio.
5.0.0 #
Release Date: 11th October 2026
dependencies:
videosdk: ^5.0.0
Upgrading from 4.0.1 or 3.12.x? 5.0 is a new major version: it needs new project setup and renames much of the API. Everything below is the complete 4.x → 5.0 change list, and the migration guide has the step-by-step guide and every rename.
Platform support #
5.0 supports Android and iOS. Applications that target Web, macOS or Windows should stay on 4.0.1.
Breaking: project setup #
- Android: Java 17,
minSdkVersion 23, andcompileSdkVersion/targetSdkVersion 36. - iOS: deployment target 13.0, with Flutter's Swift Package Manager support
on. If your project uses CocoaPods only, run
flutter config --enable-swift-package-manageronce. - iOS screen share needs a Broadcast Upload Extension in your app; see the migration guide.
- Remove any direct
videosdk_webrtcdependency and its imports.RTCVideoView,RTCVideoRendererandMediaDeviceInfonow come frompackage:videosdk/videosdk.dart. - Run
flutter cleanbefore your first 5.0 build.
Breaking: API #
- Many APIs are renamed. Old names are removed, not deprecated. The ones
most apps use:
Stream→RTCStream;CustomTrack→CustomStreamTrack, and itsdispose()→stop().createRoom(displayName:)→participantName:;customCameraVideoTrack/customMicrophoneAudioTrack→customCameraTrack/customMicrophoneTrack.- Enum values are upper case:
FacingMode.user/environment→FacingMode.FRONT/BACK. Mode.CONFERENCE/VIEWER→Mode.SEND_AND_RECV,RECV_ONLYorSIGNALLING_ONLY.- Error names say
ROOM, notMEETING. Codes are unchanged.
- One error type. Failed calls throw
VideoSDKError, with a numericcode, anameand amessage. It replaces 4.0.1'sPubSubExceptiontypes. - Actions finish before they complete, and throw on failure.
join(),leave(),end(),muteMic(),enableWebcam(),pin(),remove(),setQuality()and the rest return aFuturethat throws when the action fails. A failing call you don'tawaitraises an unhandled async error, soawaitthese insidetry/catch, and turn on theunawaited_futureslint to find them. - Screen share takes a track.
enableScreenShare()no longer takesenableAudioorsource; set them on a track fromcreateScreenShareVideoTrack().CustomTrack.toMap()is removed. - Track factories are typed.
createCameraVideoTrack()andcreateMicrophoneAudioTrack()returnFuture<CustomStreamTrack>, andcreateScreenShareVideoTrack()returnsFuture<CustomStreamTrack?>(nullwhen the user declines the capture prompt), instead ofdynamic. noiseConfigis typed.createMicrophoneAudioTrack(noiseConfig:)takes aNoiseConfig(noiseSuppression,echoCancellation, ...) instead of aMap<String, bool>.createRoom()options.maxResolutiontakesMaxResolution.HD(the default) orMaxResolution.SD.defaultCameraIndexis replaced bydefaultCamera: FacingMode.FRONTorBACK.debugModeis removed; useVideoSDK.setLogLevel().- PubSub takes a listener.
subscribe(topic, PubSubMessageListener(...), [PubSubSubscribeOptions])replaces the callback arguments and returns nothing; saved messages arrive ononOldMessagesReceived.PubSubMessage.timestampis aString. - Removed: the AI Character API (
Character,Room.createCharacter(),Room.charactersand thecharacter*events), andEvents.hlsStarted/hlsStopped(useEvents.hlsStateChanged). The full list is in the migration guide.
New #
- Video effects: framing, low light, styles, filters and background blur
on your outgoing camera, with
setVideoEffects(). On Android, face framing and blur need ML Kit in your app. - Capture an image with flash:
captureImage(flash: CaptureFlash.ON). The front camera lights the scene with a white screen once you callVideoSDK.setScreenFlash(true). - Pre-call test:
VideoSDK.runPreCallTest()checks the camera, the microphone and the network before you join. - Preview before joining: a track from
createCameraVideoTrack()renders inRTCVideoViewbefore the meeting, andcreateRoom()publishes that same camera. - Know when a video freezes:
Events.streamStateChangedon anRTCStreamreportsACTIVE,ENDED,STUCK,FREEZE_DETECTEDandFREEZE_RESOLVED. - Data messages:
room.send()sends text or bytes to everyone in the room, andEvents.dataReceiveddelivers them. - Screen share quality: new
h480p_15fps,h480p_30fpsandh720p_30fpspresets onCustomScreenShareTrackConfig, andsetScreenShareQuality()caps the quality of a screen share you receive. - SDK logs in
flutter run:VideoSDK.enableLogForwarding()sends the SDK's own log lines to a Dart callback. - Also new:
Room.respondEntry(),setAudioDeviceChangeListener()andgetShareAudioStats().
5.0.0-beta.8 #
Release Date: 10th October 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.8
Breaking: API names now match the Android, iOS and React Native SDKs. Old names are removed, not deprecated. The full before/after list is in the migration guide.
Breaking: The AI Character API is removed.
Behaviour change:
room.participantsno longer contains the local participant, as in 3.x. Useroom.localParticipantfor yourself. Code that looked yourself up inroom.participantsmust switch.Behaviour change:
Events.streamStateChangedon anRTCStreamnow fires. Handlers registered withstream.on()receive aStreamState:ACTIVE,ENDED,STUCK,FREEZE_DETECTEDandFREEZE_RESOLVED.
Know when a remote video freezes #
stream.on(Events.streamStateChanged, (StreamState state, int timestamp) {
if (state == StreamState.STUCK || state == StreamState.FREEZE_DETECTED) {
// show a "poor connection" badge on this tile
}
});
STUCK: no video has arrived for about 5 seconds.FREEZE_DETECTED/FREEZE_RESOLVED: the picture froze, and recovered.ACTIVE/ENDED: the stream started or stopped.
Remove the handler with stream.off() when the tile goes away.
Changed #
TranscriptionText.typeis aTranscriptionType(REALTIME/FULL_SENTENCE).- Error names say
ROOM, notMEETING:ERROR_ACTION_PERFORMED_BEFORE_ROOM_JOINED,ERROR_ROOM_RECONNECTING,INVALID_ROOM_IDand six more (codes unchanged; see the migration guide). createRoom(displayName:)isparticipantName:and optional.participantId,maxResolution,multiStream,mode,metaData,signalingBaseUrlandpreferredProtocolare nullable with no Dart default: left out, the native SDK applies its default.customCameraVideoTrack/customMicrophoneAudioTrackarecustomCameraTrack/customMicrophoneTrack.- Types:
Stream→RTCStream(kindisMediaType),CustomTrack→CustomStreamTrack(dispose()→stop()),CustomVideoTrackConfig/CustomAudioTrackConfig→CustomCameraTrackConfig/CustomMicrophoneTrackConfig,VideoDeviceInfo/AudioDeviceInfo→CameraDeviceInfo/MicrophoneDeviceInfo,VideoSdkError→VideoSDKError. VideoSDK:getCameras(),getMics(),getLogLevel(),getKeyProvider(),getSelectedVideoDevice(),getSelectedAudioDevice();runPreCallTest()returnsFuture<PreCallTestResult>.Room:changeCam({deviceId, customCameraTrack}),changeMic({deviceId, customMicrophoneTrack}),setAudioDevice(),startHLS()/stopHLS(),isMicEnabled/isCamEnabled,getActiveSpeakerId()/getActivePresenterId(),liveStreamState,hlsUrl,transcription:andconfig:argument names, typedRecordingConfig,HLSConfig,LivestreamConfig,LivestreamOutput,setWebcamQuality(VideoQuality),requestMediaRelay(destinationRoomId).Roomreleases itself afterEvents.roomLeftor a failed join, and when a latercreateRoomreplaces it;dispose()is removed.createRoomcreates the native room, sosetVideoProcessor()and video effects apply before join. ARoomdropped mid-join must awaitjoin()and thenleave().- Android: the native
VideoSDK.getInstance().setVideoProcessor()applies to the room Dart created and throwsIllegalStateExceptionbeforecreateRoom. Participant:enableMic()/disableMic(),videoQuality,setQuality(VideoQuality),isAgent();AgentParticipant.getAgentId(),getAgentState().- PubSub:
subscribe(topic, PubSubMessageListener, [PubSubSubscribeOptions])returns nothing (history arrives ononOldMessagesReceived);PubSubMessage.timestampis the server'sString. Each listener is its own subscription with its own options and history; the same listener twice on a topic throws3073. Realtime store:observe(key, listener)/stopObserving(key, listener). - Events:
livestreamStarted/Stopped,onLivestreamStateChanged,dataReceived(DataMessage.senderId/text/data/reliable),participantLeftdelivers theParticipant,hlsStateChanged(state, hlsUrl),transcriptionStateChanged(TranscriptionState),translationLanguageChanged(participantId, language),error(VideoSDKError),qualityLimitationaddstimestamp(values are upper case),onE2EEStateChangedcarriesstreamId. - Enum values are upper case:
RoomState,LogLevel,LeaveReason,AgentState,CaptureFlash,FacingMode,MaxResolution,VideoQuality,MediaType,Permissions,ConfigMode,ConfigQuality,ConfigOrientation,CustomMicrophoneTrackConfig;E2EEState.EncryptionSuccess/DecryptionSuccess. Events.streamStateChangeddelivers aStreamState;participantModeChanged,pinStateChangedand the room'sonE2EEStateChangedcarryMode,ParticipantPinStateandE2EEState;setScreenShareQualitytakesVideoQuality;CustomStreamTrack.endedisisEndedandvideoEncoderConfigisencoderConfig;LayoutisConfigLayout, as on the other SDKs.- SDK messages (errors, leave reasons, refusals) say "room" instead of "meeting". Codes and constant names are unchanged.
- Android also ships
armeabi-v7a;switchToback to the original room works; a livestream gets 30 s to confirm its start; the camera encoder restarts after a reconnect rebuilds the track; pre-call uplink loss never reads past 100%. Events.e2eeStateChangedisEvents.onE2EEStateChangedandEvents.livestreamStateChangedisEvents.onLivestreamStateChanged; payloads are unchanged. The other events keep their names.- Typed values replace strings:
pauseAllStreams/resumeAllStreams(kind:),requestMediaRelay(kinds:)and thepausedAllStreams/resumedAllStreamsevents useStreamKind(AUDIO,VIDEO,SHARE);mediaRelayRequestResponsedelivers aRelayDecision;TranslationText.typeis aTranslationType(PARTIAL/FULL); the external-call events deliver aCallType;LivestreamConfig.recordingis aLivestreamRecordingConfig(enabled:). VideoSDK.setScreenFlash(bool):trueinstalls the built-in white overlay,falseclears it, as on React Native.- Video-effects values read as on Android and iOS:
VideoEffectsConfig.Pipeline.GRAPH,VideoEffectsConfig.StylePreset.VIVID,VideoEffectsConfig.Lut.WARM. TheVideoEffectsPipeline,VideoEffectsStylePresetandVideoEffectsLuttypes are unchanged. - Event docs name callback parameters as the other SDKs do:
roomState,presenterId, andstatefor recording and livestream.
Added #
VideoSDK.setParticipantKey(),Room.respondEntry(),isScreenSharing,roomState,setAudioDeviceChangeListener(),setVideoProcessor()/removeVideoProcessor(),removeAllEventListeners()onRoomandParticipant,RTCStream.participantId/off(),CustomStreamTrack.onEnded(called once, withnullforstop(); set after the track ended, it is called at once),NoiseConfig,EncodingLayer,VideoQuality,TranscriptionConfig.modelConfig,LeaveReason.DUPLICATE_PARTICIPANT,Events.externalCallRinging/Answered/Rejected/Hangup.BaseKeyProvider.removeKey(participantId),VideoSDK.removeKeyProvider().StreamKind,RelayDecision,TranslationType,CallType,LivestreamRecordingConfig.StreamState, theVideoSDKError.*catalogue constants (errors are equal bycode),MediaType.SHARE_AUDIO,CameraDeviceInfo.facingMode,Room.transcriptionState/translationState.RTCVideoRenderer.setMirror(bool), alongsideRTCVideoView(mirror:).
Removed #
Character,CharacterConfig,CharacterMode,CharacterState,CharacterMessage,Room.createCharacter(),Room.characters, and theEvents.characterJoined,characterLeft,characterMessageandcharacterStateChangedevents.Mode.CONFERENCE/VIEWER,Events.hlsStarted/hlsStopped/deviceChanged,VideoSDK.on/off,VideoSDK.applyVideoProcessor(),BaseKeyProvider.setKey(),PreCallTest,PubSubMessages,Room.refreshConnection(),getAvailableVideoCodecs(),getActiveVideoCodec(),getAppliedAudioConfig(),enableRelayMedia()/disableRelayMedia(),hlsDownstreamUrl,hlsUrls.createRoom(notification:)andNotificationInfo: the value never reached the screen-share notification.startLivestream(transcription:): no native SDK took it.ScreenFlash(usesetScreenFlash(bool)),PreCallOptimizationModeandPreCallVideoConfig(optimizationMode:): no SDK uses the content hint.BaseKeyProvider(discardFrameWhenCryptorNotReady:): it had no effect, and Android has no such option.- The
VideoSDKErrorsmap, and undocumented leftovers listed in the migration guide.
Documentation #
stopConsumingMicStreams()andstopConsumingWebcamStreams()take effect only in a room created withautoConsume: false.- A shared encryption key set with
setSharedKey()is read when the room joins; changing it during a call applies on the next join. - On Android,
withAudioincreateScreenShareVideoTrack()mixes the shared sound into the microphone, sogetShareAudioStats()has nothing to report.
Bug fixes #
- Calling
room.join()a second time on a room that was already joined broke the call:participant.remove()then failed with error 4000, PubSub stopped on iOS, andend()reported no reason. The second call now throws 3054 (or 3055 while the first is still joining) and the call keeps working. participant.modenever changed afterroom.changeMode(), neither for you nor for the other participants. It now updates.- A topic's saved messages never reached the subscriber. They now arrive on
PubSubMessageListener.onOldMessagesReceived. - On Android,
localParticipant.metaDatawasnulleven when you passedmetaDatatocreateRoom(). It now holds what you passed. - On iOS, the iPhone microphone was listed as an output (
audiooutput). It is now an input (audioinput). RTCVideoRenderernever reported the video size:videoWidth,videoHeightandonResizestayed at zero while the video played. They now report the real size.- An event handler that threw stopped the handlers registered after it from running. They now all run.
participantLeftis delivered once per departure, as on the other SDKs.room.localParticipantexists fromcreateRoominstead of throwing until join.VideoSDK.getSelectedVideoDevice()/getSelectedAudioDevice()report the devices in use from join, notnulluntil the first switch.- Screen-share audio is reported as
MediaType.SHARE_AUDIO, not as a secondaudiostream. room.realtimeStore.observe()now delivers changes: the native SDKs subscribe the key on the server.CustomStreamTrack.isEndedturns true when the track ends with noonEndedhandler.TranscriptionText.participantIdis filled on iOS.- iOS:
checkBluetoothPermission()andrequestBluetoothPermission()returntrue(iOS needs no permission for Bluetooth audio) instead offalse. - iOS:
getSelectedVideoDevice()follows everychangeCam, not the first camera.
5.0.0-beta.7 #
Release Date: 2nd October 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.7
Breaking:
createCameraVideoTrack(),createMicrophoneAudioTrack()andcreateScreenShareVideoTrack()now declare their return type,Future<CustomTrack?>, instead ofdynamic. Code that assigns the result to a non-nullableCustomTrackmust handlenull— returned, for example, when the user declines screen capture.Breaking:
maxResolutioninVideoSDK.createRoom()now takes aMaxResolutionenum instead of aString: useMaxResolution.hdorMaxResolution.sd. The default is nowhd.Breaking:
defaultCameraIndexis removed fromVideoSDK.createRoom(). UsedefaultCamera: FacingMode.frontorFacingMode.backinstead.Breaking:
debugModeis removed fromVideoSDK.createRoom(). On Android it replaced the log level you had set when the meeting joined. UseVideoSDK.setLogLevel()to choose how much the SDK logs.Behaviour change:
autoConsume: falsenow takes effect. If your app passes it, remote audio and video no longer arrive until you callconsumeMicStreams()/consumeWebcamStreams()on the participant.
Choose the meeting's resolution and starting camera #
final room = VideoSDK.createRoom(
roomId: roomId,
token: token,
displayName: "Alex",
maxResolution: MaxResolution.sd, // default: MaxResolution.hd
defaultCamera: FacingMode.back, // default: FacingMode.front
autoConsume: false, // default: true
);
MaxResolution.sdopens the camera at 960x540 instead of 1280x720, andsetQuality()asks for one step lower quality from each participant.defaultCamerapicks which camera the meeting opens on. Afterroom.changeCam(), the camera you switched to stays in use.- A
customCameraVideoTrackyou pass tocreateRoom()keeps its own resolution and camera; these options only apply to the camera the SDK opens for you.
Removed #
package:videosdk/videosdk_rtc.dartand itsRtc*types — the4.0.0-beta.1prerelease entry point, deprecated since5.0.0-beta.1. It never shipped in a stable release, so applications on4.0.1are unaffected. Usepackage:videosdk/videosdk.dart.UserMessageandEvents.userMessage. The event never fired.
Documentation #
- Every event lists exactly what its handler receives, and
VideoSdkErrorlists the common error codes. - Translation (
TranslationText,TranslationStateand their events) is now documented.
Bug fixes #
maxResolution,defaultCameraIndexandautoConsumepassed toVideoSDK.createRoom()were ignored. The meeting always joined at the SDK's default resolution, on the front camera, receiving everyone's audio and video. They now take effect.- iOS: when you didn't pass a
customCameraVideoTrack, the camera joined at 640x480. It now joins at 1280x720 (960x540 withMaxResolution.sd), the same as Android. Events.mediaRelayRequestReceivednow fires on Android and iOS, so the destination meeting can accept or reject an incoming media relay request.- iOS: after a failed or denied
switchTo(), every participant join and every participant event (stream on/off and the rest) was held for the rest of the meeting. They are now delivered again. participant.onnow fires stream events (streamEnabled,streamDisabled) for that participant.
5.0.0-beta.6 #
Release Date: 25th September 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.6
Breaking:
FacingModenow uses the same names as the Android and iOS SDKs:FacingMode.useris nowFacingMode.front, andFacingMode.environmentis nowFacingMode.back. Update any code that passes afacingModetocreateCameraVideoTrack()orPreCallVideoConfig.Breaking:
enableScreenShare()no longer takesenableAudioorsource; set them on a track fromcreateScreenShareVideoTrack()instead.CustomTrack.toMap()is removed, andCustomScreenShareTrackConfighas three new values. On iOS, use the socket-based broadcast extension from VideoSDK's screen-share sample; the oldScreenShareRing.swiftone sends no video.
Screen share quality #
final track = await VideoSDK.createScreenShareVideoTrack(
encoderConfig: CustomScreenShareTrackConfig.h1080p_30fps,
withAudio: true, // Android only
);
if (track != null) await room.enableScreenShare(customTrack: track);
- New qualities:
h480p_15fps,h480p_30fpsandh720p_30fps. The default is stillh720p_15fps. - Android asks for screen-capture permission when you create the track, and
returns
nullif the user declines. On iOS, oneenableScreenShare()call opens the broadcast picker.
Capture an image with flash #
captureImage() can now light the scene before it takes the picture. A camera
with a torch, usually the back camera, turns its torch on. On the front camera,
the screen lights up white instead, once you enable it with
VideoSDK.setScreenFlash().
await VideoSDK.setScreenFlash(ScreenFlash.whiteOverlay);
final image = await room.localParticipant.captureImage(flash: CaptureFlash.on);
- Flash adds about half a second to the capture. The light turns off even if the capture fails.
- Without
setScreenFlash(), a front camera that has no torch captures without flash. - Available for the local participant only.
- If your code extends or implements
Participantand overridescaptureImage(), add the new parameter to your override:captureImage({int? width, int? height, CaptureFlash flash = CaptureFlash.off}).
Background blur #
setVideoEffects() can now blur the background behind the person on camera.
await VideoSDK.setVideoEffects(VideoEffectsConfig(
background: VideoEffectsBackground(mode: VideoEffectsBackgroundMode.BLUR),
));
blurStrengthsets how strong the blur is, from0.0to1.0. The default is0.5.- Blur runs on the default
VideoEffectsPipeline.LEGACY. - Android: add
implementation "com.google.mlkit:segmentation-selfie:16.0.0-beta6"to your app'sbuild.gradle.
Bug fixes #
room.realtimeStore.getValue()now returnsnullfor a key that was never set. Before, it threw aTypeError.
5.0.0-beta.5 #
Release Date: 21st September 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.5
Behaviour change:
createCameraVideoTrack()andcreateMicrophoneAudioTrack()now open the device when you call them. Calldispose()on a track you do not join with, or the camera stays on.
Preview before joining #
The track you create now renders in RTCVideoView before the meeting, and
createRoom() publishes that same open camera.
cameraIdandmicrophoneIdselect the device on both platforms. Before, iOS ignored both and Android ignoredmicrophoneId.getVideoDevices()andgetAudioDevices()work on Android before a join.- iOS: joining with
camEnabled: falseno longer opens the camera. - iOS:
maxLayer: 1now reaches the SDK.
The factories never ask for permission — call requestPermissions() first.
Failures throw VideoSdkError: 3017/3018 permission, 3021/3022 no device,
3023/3024 device in use, 3026 camera failed to open, 3071 unknown device id.
Pre-call test #
VideoSDK.runPreCallTest() checks the camera and microphone and scores the
network before joining, as the JavaScript SDK does. Android and iOS only.
final test = VideoSDK.runPreCallTest(
PreCallTestOptions(token: token, videoTrack: cameraTrack),
onStatsChange: (stats) => print(stats.uplink.quality),
);
final result = await test.result;
- Run it before
createRoom(), and stop it yourself before you do — creating a room refuses a new test but does not stop a running one. - Pass your own tracks, or let the test open the devices and hand them back in the result. A track you passed is never stopped.
PreCallTest.stop()ends the run; the result still arrives, withaborted: true.- Failures throw
PreCallTestException, with the same string codes as the other SDKs.
5.0.0-beta.4 #
Release Date: 15th September 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.4
Breaking: failed calls now throw
VideoSdkErrorinstead ofPlatformException.Breaking:
Room.end(),Room.stopTranslation(),Stream.pause()and theParticipantactions, such aspin(),unpin(),setViewPort(),remove()andsetQuality(), now return aFuturethat throws on failure. Existing calls still compile, but a failure is no longer logged for you: a call such asroom.end();orparticipant.pin();that is not awaited now raises an unhandled async error. That is reported as a crash underrunZonedGuardedwith Crashlytics or Sentry, and fails aflutter test.awaitthese calls insidetry/catch, and turn on theunawaited_futureslint to find them.Android behaviour change: joining in
RECV_ONLYorSIGNALLING_ONLYwithmicEnabledorwebcamEnabledset totruenow turns them on when you switch toSEND_AND_RECV.
Error codes #
Errors carry the same code and name as the VideoSDK JavaScript, Android and
iOS SDKs.
try {
await room.join();
} on VideoSdkError catch (e) {
if (e.code == 4002) { /* invalid or expired token */ }
}
| Situation | Error | Code |
|---|---|---|
| Joining with an empty room id or token | ERROR_INVALID_PARAMETER |
3073 |
| Joining with an invalid or expired token | INVALID_TOKEN |
4002 |
| Calling an action again before it finishes | ERROR_OPERATION_IN_PROGRESS |
3055 |
Calling leave() after you have left |
ERROR_ALREADY_IN_REQUESTED_STATE |
3054 |
| Calling any other action after you have left | ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED |
3035 |
| Any other failure | UNKNOWN_ERROR |
4000 |
Known limitations #
- Android: with more than one character in a room,
Events.characterLeftandEvents.characterStateChangedreach every character, because the Android SDK does not say which character they are about. With one character, and on iOS, they reach only that character. - iOS:
CharacterConfig.languageis not sent to the SDK, which has no such setting.Character.languagestill returns the value you set.
Android: camera and microphone settings are kept #
Track settings such as encoderConfig, bitrateMode and noiseConfig, and the
selected device, now survive turning the camera or microphone off and on,
switching devices, changeMode(), switchTo() and reconnecting. Only codec
can change: it falls back to VP8 for the rest of the meeting when another
participant cannot decode it.
changeCam() and changeMic() #
changeCam(null, track)/changeMic(null, track)switch to the track and turn the camera or mic on. A device passed along with a track is ignored.changeCam(device)/changeMic(device)switch device and keep the camera or mic on or off.changeCam()/changeMic()switch to the next device.changeMic(device)before joining (or after leaving) selects the mic for the next join.- An unknown device throws
3051(camera) or3059(mic). switchAudioDevice()no longer unmutes the mic on iOS.
Bug fixes #
Stream.pause()andStream.resume()had no effect. They now pause and resume the stream.- Android: a camera turned off before switching to
RECV_ONLYorSIGNALLING_ONLYcame back on after switching toSEND_AND_RECV. - Android:
noiseConfigon a microphone track was ignored. - Android: the camera and microphone could stay off after a network drop.
5.0.0-beta.3 #
Release Date: 14th September 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.3
Breaking:
Events.videoEffectsStatsis a new value on theEventsenum. AswitchoverEventswithout adefaultcase will no longer compile.Breaking: methods that return a
Future—join(),leave(),muteMic(),enableWebcam()and the rest — now complete when the native SDK has finished, and throw aPlatformExceptionwhen it fails. Before, most completed as soon as the call was sent.end(),stopTranslation()andsetViewPort()returnvoid; a failure there is logged.
Video effects #
Framing, low-light, style and filter effects for your outgoing camera video, on Android and iOS. Every other participant sees the result, and so does your own preview.
await room.setVideoEffects(const VideoEffectsConfig(
framing: VideoEffectsFraming(enabled: true),
lighting: VideoEffectsLighting(enabled: true),
filter: VideoEffectsFilter(lut: VideoEffectsLut.WARM),
));
VideoEffectsPipeline.LEGACY, the default, runs the effects on the CPU, and framing follows your face automatically.VideoEffectsPipeline.GRAPHruns the effects on the GPU. Framing there follows the subject box you publish withpublishFramingSubject().getAppliedVideoEffectsConfig()reports what is actually running, which can differ from what was requested.Events.videoEffectsStatsreports effects performance, such as the encoded frame rate.- Android: face framing on the CPU engine needs ML Kit in your app. Add
implementation "com.google.mlkit:face-detection:16.1.7"toandroid/app/build.gradle; without it the other effects still run and the result'sreasonsays why framing is off. - iOS: a room joined without a
customCameraVideoTrackpublishes 640x480, because native iOS SDK 4.0.0-beta.6 crops the portrait camera to a landscape band and 1280x720 looks very zoomed. Pass a track fromVideoSDK.createCameraVideoTrack(encoderConfig: …)for another size.
5.0.0-beta.2 #
Release Date: 8th September 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.2
Breaking:
Events.dataMessageis a new value on theEventsenum. AswitchoverEventswithout adefaultcase will no longer compile.
Receiving data messages #
Events.dataMessage is the receive side of room.send(). Text and binary
frames arrive on the same event; isBinary says which one you have.
room.on(Events.dataMessage, (DataMessage message) {
if (message.isBinary) {
print('${message.bytes?.length} bytes from ${message.from}');
} else {
print('${message.from} says ${message.payload}');
}
});
New on Room #
send()— send aStringorList<int>to everyone in the room.setWebcamQuality()— cap your own outgoing video quality. Accepts"low","med","high"or a layer id like"s1t2". An unrecognised name throwsArgumentErrorat the call site rather than failing later.setScreenShareQuality()— cap the quality of the screen share you receive from one participant.getAvailableVideoCodecs()andgetActiveVideoCodec().getAppliedAudioConfig()andgetAppliedVideoConfig()— the audio and video settings actually in use, which can differ from what was requested.getAttributes()andrefreshConnection().
New on Participant #
getTransportStats() and getShareAudioStats(), plus
setScreenShareQuality().
Seeing SDK logs in flutter run #
flutter run only relays Dart output, so the SDK's own log lines were visible
only in logcat or Xcode. VideoSDK.enableLogForwarding() delivers them to a
Dart callback instead. These are SDK-wide and start before join().
await VideoSDK.enableLogForwarding((level, message) {
print('[$level] $message');
});
Bug Fixes #
- Fixed event ordering on iOS so
Events.roomJoinedis emitted before remote participant and stream events. - Fixed
participant.setViewPort()throwing when used for a remote participant. - Fixed
Events.dataMessagenot firing on Android. - Normalized Chat and PubSub timestamps across Android and iOS so messages no longer fall back to 1 January 1970 or sort into the wrong position.
- Made
room.send()complete only after the native send operation completes. - Restored participant media statistics on both Android and iOS.
- Added support for layer quality names such as
"s1t2"on iOS. - Made
unpin()pass its requestedPinTypeto the native SDK. - Corrected the swapped camera callbacks on
Characterand restored the callback supplied toAgentParticipant.
5.0.0-beta.1 #
Release Date: 27th August 2026
Beta release: This version is intended for testing before the stable 5.0.0 release. Pin the prerelease explicitly when adding it to your application.
dependencies:
videosdk: 5.0.0-beta.1
Highlights #
- Audio and video meetings on Android and iOS.
- Screen sharing, recording, HLS, and RTMP livestreaming.
- Real-time transcription and translation.
- AI agent state, transcription, and metrics events.
- PubSub messaging, Realtime Store, and whiteboard support.
VideoSDK.sdkVersionfor displaying the installed SDK version in diagnostics.
Upgrade guidance #
Applications can continue using the main public entry point:
import 'package:videosdk/videosdk.dart';
The standard VideoSDK, Room, Participant, Stream, and Events APIs
remain available. When upgrading:
- Remove any direct
videosdk_webrtcdependency and its imports. Video view, renderer, and media-device types are available fromvideosdk. - Replace imports of the deprecated
package:videosdk/videosdk_rtc.dartAPI withpackage:videosdk/videosdk.dart. - Run
flutter pub get, then perform a clean rebuild of the application.
Platform support #
This beta supports Android and iOS. Applications targeting Web, macOS, or
Windows should remain on the latest compatible 3.12.x release.
Lifecycle #
Room now has a dispose(). Call it when the room is finished with — after
leave(), or when the screen that owns it is torn down — so it stops consuming
native events. A disposed room cannot be joined again; create a new one instead.
await room.leave();
await room.dispose();
Known limitations #
Events.codecChangedreportsVideoCodec.VP8asunsupportedRemoteCodecwhen the native SDK reports no unsupported codec at all.CodecChangeInfo's fields are non-nullable, so an absent value cannot be told apart from a real VP8 report. ReadcurrentCodecandpreviousCodecfor the switch itself.Events.hlsStartedcarries a nullable playback URL — some native SDKs do not report one — and will be deprecated in a future release. UseEvents.hlsStateChanged, which carries the downstream, playback and livestream URLs.
4.0.0-beta.1 #
Release Date: 25th August 2026
Change Log :
Beta release. A prerelease is not picked up by
flutter pub add videosdk— ask for it explicitly withvideosdk: ^4.0.0-beta.1. The API may still change before 4.0.0 final.
What's New:
Calls can now run on the native Android and iOS SDKs #
A new entry point, package:videosdk/videosdk_rtc.dart, runs the meeting on VideoSDK's native Android and iOS SDKs. Use VideoSDKRtc to join, and the RtcRoom it returns to drive the meeting:
await VideoSDKRtc.initialize();
await VideoSDKRtc.config(token);
final room = await VideoSDKRtc.join(
meetingId: 'abcd-efgh-ijkl',
name: 'Alice',
speakingLanguage: 'en',
translationLanguage: 'hi',
);
room.events.listen((e) => print(e.name));
Render a participant with RtcVideoView(participantId: id), or their screen share with RtcVideoView(participantId: id, kind: 'share').
This entry point is Android and iOS only.
package:videosdk/videosdk.dartis unchanged and still supports Web, macOS and Windows.
Breaking:
videosdk_webrtcis no longer a dependency. Remove any direct import of it.
Real-time translation #
Participants can speak one language and read another. Set the pair on join() with speakingLanguage and translationLanguage, then start it:
await room.startTranslation();
await room.changeTranslationLanguage('hi');
Translated speech arrives on room.events as onTranslationText, with a type of partial while the speaker is still talking and full once the sentence settles.
Screen share #
enableScreenShare() and disableScreenShare(). A share arrives as a separate share stream on the participant who started it, so it gets its own tile instead of replacing their camera — check participant.screenShareOn.
On Android the system asks the user to confirm the capture. On iOS, add a Broadcast Upload Extension to your app and point RTCScreenSharingExtension in Info.plist at it — without it, enableScreenShare() fails with NO_EXTENSION. On iOS it also returns as soon as the share sheet opens, so it cannot report that the user cancelled.
3.12.1 #
Release Date: 20th August 2026
Change Log :
Bug Fixes:
-
Android builds no longer need any manual setup. Building an app for Android could fail in Gradle with a
compileSdkVersionerror, Android builds now work directly afterflutter pub get, on developer machines and CI alike. -
Prepared the Android build for Android Gradle Plugin 9. The SDK now applies the Kotlin Gradle plugin only when AGP is not compiling Kotlin itself, so it keeps building on both current and upcoming AGP versions. No change is needed in your app.
The SDK's own Android sources now compile against Java 17. Your app's
compileOptionsare unaffected — apps building at Java 11 or Java 8 continue to work unchanged.
3.12.0 #
Release Date: 18th August 2026
Change Log :
Meeting actions now report an error instead of doing nothing #
Calling a meeting action before the meeting is joined, or while it is reconnecting, is now rejected and reported through Events.error. This covers Room, Participant, Stream, PubSub, RealtimeStore and Character.
- Before the meeting is joined, and after it is left or ended:
ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED(3022) - While reconnecting:
ERROR_MEETING_RECONNECTING(3027) leave()is never blocked — it works while the meeting is still connecting and while it is reconnecting, so you can always get out.end()works while connecting, but not while reconnecting, because closing the meeting for everyone needs a working connection.
New RoomState.failed #
Delivered through Events.roomStateChanged when a join could not be set up at all — a rejected token, or meeting settings that could not be fetched. Unlike reconnecting, nothing retries it; call join() again to start a fresh attempt.
Breaking: if you
switchoverRoomStatewithout adefaultbranch, addcase RoomState.failed:when upgrading.
Fixes #
-
leave()no longer hangs when the connection drops. Callingleave()while the meeting was reconnecting never finished — the camera and microphone stayed on andEvents.roomLeftnever fired, so the app was stuck on the meeting screen. Leaving now completes immediately, whatever the connection is doing. -
Actions called before join no longer crash.
participant.pin(),unpin()and therealtimeStoremethods report the error instead of throwing.
3.11.0 #
Release Date: 11th August 2026
Change Log :
Your camera & microphone settings now stay applied for the whole meeting #
Earlier, the settings you chose while creating a camera or microphone track were applied only the first time. Whenever the SDK needed to recreate the track, it went back to its own defaults (720p video, speech_standard audio, front camera, no noise settings). So a participant who joined at 1080p could end up sending 720p video after simply turning the camera off and on again.
Your chosen settings are now remembered and re-applied every time. This covers:
- Camera: selected camera,
encoderConfig(resolution/quality),multiStream,bitrateMode,maxLayerandfacingMode. - Microphone: selected microphone,
encoderConfig(audio quality) andnoiseConfig.
codec is the one exception — it follows what the meeting can actually carry. If a participant joins who cannot decode your selected codec, the camera falls back to VP8 and stays there for the rest of the meeting, even if that participant leaves.
Settings are preserved across all of these:
disableCam()→enableCam()andmuteMic()→unmuteMic()changeCam()/changeMic()when switching to another device- Automatic reconnection after a network drop
- Automatic recovery when a camera or microphone stops (device unplugged, or taken over by another app)
changeMode()betweenSEND_AND_RECV,RECV_ONLY
If you pass a new CustomTrack to enableCam(), unmuteMic(), changeCam() or changeMic(), that track's settings become the remembered settings from that point on.
Fixes #
-
A new track no longer changes the quality of a track that is already being sent. The selected
bitrateModewas shared across tracks, so creating a second track with a different mode changed the quality of the video already going out. Each track now uses only the mode you set for it. -
Your
multiStreamchoice is no longer lost. If the video codec in use could not send multiple quality layers,multiStreamstayed switched off for the rest of the meeting. Your choice is now remembered and applied again automatically once the codec allows it. -
Unmuting works even if the microphone was released earlier. If something else had taken the microphone away — another app, or the participant changing mode — unmuting could fail to bring it back. The SDK now creates a fresh microphone with your saved settings.
-
The same codec warning is no longer repeated. The warning about multiple quality layers not being supported by the selected codec was raised again on every camera on/off. It is now raised only when you supply a track yourself.
-
The camera and microphone no longer switch off on their own. When the SDK replaces the camera or mic stream (codec change, device switch, reconnect), the old stream sends a "stopped" notice. That notice was treated as "the user's camera stopped", so the camera turned off right after turning on. Each notice is now matched to the stream it belongs to.
-
The camera no longer restarts twice. The SDK turns the camera off and on again automatically when it must re-send video in a different codec. If two participants who need that change joined at nearly the same moment, this ran twice — other participants saw the video freeze for about twice as long. Only one restart now runs at a time.
-
Running more than one meeting in the same app shows the correct camera/mic state. Camera and mic on/off state was shared between meetings, so one meeting could report the other's state. Each meeting now keeps its own — this also fixes wrong state when leaving and rejoining quickly.
-
A muted microphone or camera works again after a mode change. If the mic (or camera) was off when
changeMode()was called, the SDK released it but still held on to the released one and tried to reuse it. Unmuting afterwards showed the mic as ON while no one could hear the participant. A fresh microphone/camera is now always created. -
Invalid
maxLayervalues are handled safely. Values outside1–3are adjusted to the nearest valid value instead of producing a broken video configuration.
3.10.1 #
Release Date: 24th July 2026
Change Log :
- Removed the third-party dependency to resolve limitation of flutter sdk version.
3.10.0 #
Release Date: 7th July 2026
Change Log :
- Added support for selectable video codecs in
createCameraVideoTrack(). Thecodecoption supportsVP8,VP9,AV1, andH264throughVideoCodec.
3.9.1 #
Release Date: 12th May 2026
- Resolved an internal bug.
3.9.0 #
Release Date: 13th April 2026
Change Log :
- Added
Events.agentMetricsevent onAgentParticipantfor receiving real-time agent metrics data. - Improved room joining time.
- Improved performance by offloading heavy processing to background threads.
3.8.0 #
Release Date: 18th Mar 2026
Change Log :
- Introduced
AgentParticipant, a dedicated participant type for AI agents within a room.- Agents can be identified using the
isAgentproperty when they join.
- Agents can be identified using the
- Added
AgentStateenum (IDLE,LISTENING,THINKING,SPEAKING) to represent the agent lifecycle. - Added event listeners for agent updates:
Events.agentStateChangedto track state transitions.Events.agentTranscriptionReceivedto receive real-time transcription.
- Updated internal dependencies.
3.7.0 #
Release Date: 20th Feb 2026
Change Log :
- Introduced the
setLogLevelmethod inVideoSDK, enabling developers to control log verbosity. This improves debugging efficiency during development.
3.6.1 #
Release Date: 9th Feb 2026
Change Log :
- Updated the official Dart API Reference for the Flutter VideoSDK package.
3.6.0 #
Release Date: 5th Feb 2026
Change Log :
- Introduced an autoConsume boolean parameter to the createRoom method. Also introduced methods in the
Participantclass tostartandstopconsuming participant streams. - Updated the official Dart API Reference for the Flutter VideoSDK package.
Bug Fix :
- Resolved an audio distortion issue (chipmunk effect) occurring with Bluetooth output devices such as AirPods.
- Fixed a Windows build error affecting Flutter desktop builds.
- Resolved an issue related to switching external
CameraandMicrophonedevices on the web. - Updated Internal Dependencies.
- Fixed an issue that caused video streams to not render when multiple participants were present in a meeting on
macOS.
3.5.1 #
Release Date: 20th Jan 2026
- Updated internal dependencies.
3.5.0 #
Release Date: 06th Jan 2026
- Added
Realtime Store functionalityto store, update, retrieve, and observe custom key-value data in real time during a meeting - Fixed an iOS issue with switching audio output devices.
3.4.0 #
Release Date: 31st Dec 2025
-
Updated the default encoderConfig value in
createCameraVideoTrack()toh720p_w1280p. -
Introduces advanced video track optimization features, enabling greater flexibility and control over quality and bandwidth. Below are the new parameters added to
createCameraVideoTrack().-
BitrateMode- Added the
BitrateModeparameter to manage video quality and bandwidth usage easily. - Developers can now select from three modes based on their requirements:
- bandwidth_optimized
- balanced (default)
- high_quality
- Added the
-
maxLayer- Introduced the
maxLayerparameter to allow developers to specify the maximum number of simulcast layers published for a video track.
- Introduced the
-
-
Added a
quality-limitationEvent on theRoomclass, enabling detection and handling of quality constraints caused by bandwidth limitations, network congestion, or CPU pressure. -
Introduced a
stream-stateEvent on theStreamclass to track video and screen-share stream lifecycle states, including active, stuck, freeze-detected, and ended.
3.3.0 #
Release Date: 12th Dec 2025
- Introduced Adaptive Subscription Manager feature, allowing dynamic management of participant subscriptions based on network conditions and application requirements.
3.2.0 #
Release Date : 6th Nov 2025
Change Log :
- Introduced two new methods —
pause()andresume()— enabling developers to pause and resume active streams. - Added a new
LeaveReasonenum to show specificreasonin roomLeft and participantLeft event.
Bug Fix :
- Resolved an issue where acknowledgment events were not properly handled in the Pin-State system.
- Fixed a bug causing random resolutions to be used after setting a custom track, ensuring consistent video quality as defined by the user.
3.1.0 #
Release Date : 17th Oct 2025
Change Log :
- On the web, the microphone will now be muted when the input audio device is disconnected. Users will need to unmute it to continue.
Bug Fix :
- Fixed issues in Multistream.
3.0.0 #
Release Date : 19th Sept 2025
Change Log :
- Updated internal dependencies.
- Enabled system audio sharing while screen sharing on Android.
- Added Reason map on
participantleftevent - Enabled background camera access on iOS for Picture-in-Picture (PiP) mode.
Bug Fix :
- Fixed issues with room stats on Android, iOS, and macOS.
2.3.1 #
Release Date : 4th July 2025
Change Log :
- Enhanced the E2EE feature by introducing participant-wise encryption.
2.3.0 #
Release Date : 30th May 2025
Change Log :
- Added
captureImagemethod in theParticipantclass to capture the image of the user from MediaStream. - Added methods
uploadBase64FileandfetchBase64FileinRoomclass to upload and download a temporary file.
2.2.0 #
Release Date : 16th May 2025
Change Log :
- Introduced two new features to enhance the Interactive Livestream (ILS) experience:
- Fast Channel Switching – New Fast Channel Switching feature enables instant transitions between live streams with minimal latency.
- Media Relay Support – Introducing Relay Media, enabling hosts to share their media (audio, video, screen) with other live streams. Perfect for creating engaging "PK battles" and collaborative broadcasts.
2.1.2 #
Release Date : 29th April 2025
Bug Fix :
- Fixed an issue where multiStream wasn’t working properly, making multiple streams work as expected.
2.1.1 #
Release Date : 17th April 2025
Bug Fix :
- Fixed End-to-End Encryption (E2EE) for web.
Change Log :
- Added
pauseAllStreams()andresumeAllStreams()method to pause/resume all remote participant's media streams (audio, video, and screen share) or a specific stream type if provided.
2.1.0 #
Release Date : 11th April 2025
Change Log :
- Introduced End-to-End Encryption (E2EE) support to ensure secure media transmission, where media streams are fully encrypted between participants without any server-side access.
2.0.0 #
Release Date : 1st April 2025
Change Log :
- Enhanced Room/Meeting Connection Flow:
- A
RECONNECTINGstate has been introduced that activates if the network connection is lost during a meeting. The SDK will automatically try to rejoin, enhancing reliability. - The
FAILED,CLOSING, andCLOSEDstates have been eliminated. All disconnection scenarios will now be managed by theDISCONNECTEDstate for a more streamlined experience.
1.3.2+1 #
Release Date : 31st March 2025
Change Log :
- Updated internal dependencies.
1.3.1 #
Release Date : 25th February 2025
Change Log :
- Updated internal dependencies.
1.3.0 #
Release Date : 22nd January 2025
Change Log :
- Deprecated Modes: Replaced
CONFERENCEwithSEND_AND_RECVandVIEWERwithSIGNALLING_ONLY. - New Mode: Added
RECV_ONLYfor live streaming, allowing participants to receive media without sending it. - Role Switching: Enabled seamless role switching between
SEND_AND_RECV(host) andRECV_ONLY(audience) usingchangeMode()method.
1.2.5 #
Release Date : 18th December 2024
Bug Fix:
- Fixed issues related to Flutter version 3.27.
Change Log :
- Updated internal dependencies.
1.2.4 #
Release Date : 17th December 2024
Change Log :
- Added
roomStateChangedEvent.
1.2.3 #
Release Date : 24th October 2024
Change Log :
-
Dependencies updated to latest version.
-
Provided event
onUserMessageinCharacterclass.
1.2.2 #
Release Date : 23rd September 2024
Change Log :
- Provided methods and events for Whiteboard Management.
1.2.1 #
Release Date : 13th August 2024
Change Log :
- Added support for CharacterSDK.
1.2.0+1 #
Release Date : 8th August 2024
Change Log :
-
Removed support for facingMode in desktop based applications.
-
Changed value of facingMode enum from
fronttouser.
1.2.0 #
Release Date : 7th August 2024
Change Log :
-
Removed methods
getMics,getCamerasandgetAudioOutputDevicesof theRoomclass. -
Changed return type of
createMicrophoneAudioTrack()andcreateCameraVideoTrack()methods from CustomTrack to CustomTrack?. -
Changed parameter type of
changeMic(),changeCam()andswitchAudioDevice()methods. -
Improved error handling and emitting more precise errors on the event.
-
Changed type of post transcription config parameter in
startRecording(),startHls()andstartLivesStream()methods. -
Changed type of transcription config parameter in
startTranscription()method. -
Provided debugMode parameter in
createRoom()method for enabling users to view detailed error logs directly on the VideoSDK's dashboard and changed parameter type of facingMode.
1.1.13 #
Release Date : 17th July 2024
Change Log :
- Added support for Custom Video Processors in iOS and Android.
1.1.12 #
Release Date : 31st May 2024
Change Log :
-
Provided getter for selected Audio Output Device as
selectedSpeakerId. -
Provided Built-In Receiver(Earpiece) support for iOS Devices.
-
Provided
transcriptionparameter instartLivestream()method of theRoomclass.
Bug Fix :
-
Fixed bugs in getters of selected Audio Input(
selectedMicId) and Video (selectedCamId) Devices. -
Triggered the
streamdisabledevent of the participant object when a participant leaves the meeting. -
Fixed an issue where users were unable to join meetings without media permissions.
-
Disposed media tracks for the Firefox browser in
getVideoDevices()andgetAudioDevices()methods.
1.1.11+1 #
Release Date : 21th May 2024
Bug Fix :
- Changed the default value of preferredProtocol
1.1.11 #
Release Date : 20th May 2024
Change Log :
- Provide Pre-Call Screen's features.
- Provide
signalingBaseUrlparameter increateRoom()method of VideoSDK class to enable the usage of a proxy server with the VideoSDK. - Provide
preferredProtocolparameter increateRoom()method of VideoSDK class to select protocol for media transportion.
Bug Fix :
- Fixed an issue related to switch audio device for Web.
- Fixed an issue related to micEnabled and camEnabled getters.
1.1.10 #
Release Date : 6th May 2024
Change Log :
- Added support for post and realtime transcription feature
Bug Fix :
- Fixed an issue related to video and screenShare for firefox browser
1.1.9 #
Release Date : 25th Apr 2024
Bug Fix :
- Fixed voice coming from earpiece issue for iOS.
- Fixed not able to start screenShare issue for android 14
Change Log :
- Upgraded internal dependencies
1.1.8 #
Release Date : 5th Apr 2024
Bug Fix :
- Fixed Rendering issue with Windows Platform.
1.1.7 #
Release Date : 27th Oct 2023
Change Log :
- Added metaData property associated with Participant to pass additional information.
- Added payload feature in PubSub to pass additional payload data.
- Added sendOnly feature to PubSub to Publish data for only Participants mentioned.
1.1.6 #
Release Date : 18th Sep 2023
Bug Fix :
- Fixed issues with mediaConstraints on the arm64-v8a and x86_64 architectures.[below Android version 10]
1.1.5 #
Release Date : 8th Aug 2023
Change Log :
- Internal improvements
Bug Fix :
- Fixed issues related to audio while toggling
1.1.4+1 #
Release Date : 27th July 2023
Bug Fix :
- Fixed audio issue with some devices
1.1.4 #
Release Date : 17th July 2023
Change Log :
- Upgraded internal dependencies
Bug Fix :
- Fixed mic state issue
- Fixed crash issue for below Android 10
- Fixed issue with screen share foreground service
1.1.3 #
Release Date : 2nd June 2023
Bug Fix :
- Fixed VideoSDK Stats issues with latest chrome browser
1.1.2 #
Release Date : 19th May 2023
Change Log :
- Added
screenSharefeature support for flutter Windows - Added
getScreenShareSources()method for Desktop Apps
1.1.1 #
Release Date : 17th May 2023
Change Log :
- Added
screenSharefeature support for flutter web & macOS - Added error code for screenShare permission denied error
Bug Fix :
- Fixed
onPresenterChangedevent on presenter-left
1.1.0 #
Release Date : 25th Apr 2023
Change Log :
- Added Beta support for Mac and Windows Platforms
- Added Beta support for Flutter Web Platform
1.0.13+1 #
Release Date : 14th Apr 2023
Bug Fix :
- Improved Audio Quality
- Improved SDK Performance
1.0.13 #
Release Date : 1st Apr 2023
Change Log :
HLS_PLAYABLEstate added in thehlsStateChanged.hlsUrlsgetter added in theRoom.
1.0.12 #
Release Date : 24rd Mar 2023
Change Log :
pin()added to pin a participant.unpin()added to unpin a participant.changeMode()allows the participant to switch mode betweenCONFERENCEandVIEWER.
1.0.11 #
Release Date : 03rd Mar 2023
Bug Fix :
- Fixed room not closing if
leave()called before meeting is joined. - Internal dependencies updated.
1.0.10 #
Release Date : 03rd Jan 2023
Change log :
- Added
getVideoStats(),getAudioStats()andgetShareStats()to get the statistics for the video, audio and share stream of a participant.
1.0.9 #
- Added support for custom audio and video tracks.
- Added events for recording, live streaming and HLS status.
- Added event for participant notifying the change in video quality.
- Added
startHls()andstopHls()methods. - Updated
startRecording()andstartLiveStream()to acceptconfigvalues for the feed. - Fixed
unable to start video or micafter turning them off.
1.0.8 #
- Added new flag
multiStreamforcreateRoom()
1.0.7 #
- Updated Gradle Version for Android
1.0.6 #
-
Added ErrorEvents for Room.
-
Fixed crash on
end(), when the room is not joined yet.
1.0.5 #
- Added support for iOS ScreenSharing.
1.0.4 #
-
Added support for changing audio device.
-
Fixed issue: PrintDevLog issue
1.0.3 #
- Fixed issue: VideoRenderer.onFirstFrameRendered implementation.
1.0.2 #
- Fixed issue on room ends.
- Provides reason on room left.
1.0.1 #
- Fixed change webcam issue
1.0.0 #
-
Renamed
Meetingclass toRoomclass. -
Changed import file
package:videosdk/rtc.darttopackage:videosdk/videosdk.dart -
Changed events:
Events.meetingJoinedtoEvents.roomJoinedEvents.meetingLefttoEvents.roomLeftEvents.webcamRequestedtoEvents.cameraRequestedChanged properties and methods forRoomclassselectedWebcamIdtoselectedCamIdenableWebcam()toenableCam()disableWebcam()todisableCam()changeWebcam()tochangeCam()getWebcams()togetCameras()Changed methods forParticipantclassenableMic()tounmuteMic()disableMic()tomuteMic()enableWebcam()toenableCam()disableWebcam()todisableCam()
-
Added
VideoSDK.createRoom()to create VideoSDK Rooms. Usejoin()to join VideoSDK Room. -
Added
defaultCameraIndexoption to select default camera forRoomClass. -
Added
micEnabledproperty forRoomClass. -
Added
camEnabledproperty forRoomClass. -
Added
end()method forRoomClass. -
Removed
MeetingBuilderWidget. -
Fixed the issue of joining room (meeting) multiple time.
-
Fixed issues related to resource consumption.
0.0.14 #
setViewport()added for participant webcam streams
0.0.13 #
- Added support for region wise baseUrls
- Added support for Android 12
- Added support for custom ice-servers
- Performance improvements
0.0.12 #
- iOS mic issue resolved
- entry request event handled
0.0.11 #
- Handle Entry Request
0.0.10 #
- PubSub Message
- custom participnatId
0.0.9 #
- Android Screen Share
- Events Enums
0.0.8 #
- Added fix for Mic / Webcam enable request
0.0.7 #
- Participant can pause or resume all video, audio and shareshare streams.
- Participant can set quality of video stream of other participant.
0.0.6 #
- Participant can request to turn on any participants' webcam or mic and can turn off the same
- Participant can remove another participant from meeting.
0.0.5 #
- livestream, recording, change webcam, active speaker and presenter indication, remote share streams and example code improved
0.0.4 #
- example app, pub description added.
0.0.3 #
- Installation steps added for android in
READMEfile.
0.0.2 #
- Exporting Meeting, Participant, Stream classes and MeetingBuilder widget.
0.0.1 #
- videosdk rtc meeting library initial release.