videosdk library

Audio/video calling, live streaming, recording and screen share for Flutter, powered by VideoSDK.live.

Everything starts at VideoSDK: it creates a Room, enumerates devices and builds custom tracks. A Room carries the Participant list, emits Events, and owns recording, HLS, RTMP and transcription. Render a participant's video with RTCVideoView.

Example

final room = VideoSDK.createRoom(
  roomId: 'abcd-efgh-ijkl',
  token: token,
  participantName: 'Alice',
);

room.on(Events.roomJoined, () {
  print('joined ${room.id}');
});

await room.join();

// when the call ends; the room then releases itself:
await room.leave();

The room runs on VideoSDK's native Android and iOS SDKs. See the README for the per-platform permission and build setup, and docs.videosdk.live for the full guides.

Classes

AgentParticipant
Represents an AI agent participant in the room.
BaseKeyProvider
Default implementation of KeyProviderBase used for end-to-end encryption.
CameraDeviceInfo
Represents information about a video input device (camera).
CodecChangeInfo
Payload for the Events.codecChanged event.
ConfigLayout
The layout of a recording, HLS stream or livestream. A field left null takes the server's default.
CustomStreamTrack
A camera, microphone or screen-share track created before the room.
DataMessage
One frame received over the data channel — the receive side of Room.send, delivered with Events.dataReceived.
DeviceInfo
Base class for media device information.
HLSConfig
Options for Room.startHLS. A field left null takes the server's default.
HLSUrl
The URLs of a running HLS stream, from Events.hlsStateChanged.
LivestreamConfig
Options for Room.startLivestream. A field left null takes the server's default.
LivestreamOutput
One RTMP destination for Room.startLivestream.
LivestreamRecordingConfig
Whether a livestream is also recorded, for LivestreamConfig.recording.
MediaDeviceInfo
Describes a single media input or output device.
MicrophoneDeviceInfo
Represents information about an audio input or output device.
NoiseConfig
Audio-processing switches for a microphone track.
Participant
Someone in the room — you, as Room.localParticipant, or anyone else, in Room.participants.
ParticipantPinState
Represents the pin state of a participant's media streams.
PostTranscriptionConfig
Configuration for post-transcription processing.
PreCallAudioConfig
How the pre-call test opens the microphone — the web SDK's audioConfig. Every field is optional.
PreCallAudioQuality
Audio values for one direction. Uplink carries bytesSent, downlink bytesReceived.
PreCallDirectionQuality
One direction's score, what lowered it, and the per-kind values behind it.
PreCallMediaReport
One device check — the web SDK's result.camera / result.microphone.
PreCallNetworkQuality
Network quality in both directions — the web SDK's networkQuality and the onStatsChange(stats) payload.
PreCallTestOptions
Options for VideoSDK.runPreCallTest — the web SDK's runPreCallTest options, less onStatsChange, which is a separate argument.
PreCallTestResult
What a finished or stopped pre-call test resolves with — the web SDK's {aborted, testDuration, camera, microphone, networkQuality}.
PreCallVideoConfig
How the pre-call test opens the camera — the web SDK's videoConfig, with the fields of VideoSDK.createCameraVideoTrack. Every field is optional.
PreCallVideoQuality
Video values for one direction. Uplink carries bytesSent and qualityLimitationReason; downlink the frame-drop and freeze counters and bytesReceived.
PubSub
Represents the PubSub (Publish-Subscribe) mechanism for the room.
PubSubHistoryInfo
Paging state of the history delivered to PubSubMessageListener.onOldMessagesReceived.
PubSubMessage
Represents a single PubSub message.
PubSubMessageDropInfo
What PubSubMessageListener.onMessageDrop reports.
PubSubMessageListener
Receives a topic's messages; pass it to PubSub.subscribe and the same object to PubSub.unsubscribe. Every callback is optional.
PubSubPublishOptions
Represents the options for publishing a PubSub message.
PubSubSubscribeOptions
Options for PubSub.subscribe. A field left null takes the server's default.
RealtimeStore
A key-value store shared by everyone in the room, kept in sync in realtime.
RecordingConfig
Options for Room.startRecording. A field left null takes the server's default.
Room
A room, and the object you listen to for everything that happens in it.
RTCStream
One audio, video or screen-share stream from a participant.
RTCVideoRenderer
Says which video an RTCVideoView shows.
RTCVideoView
Shows a participant's video, a screen share, or a local preview.
SummaryConfig
Configuration for transcription summary generation.
TranscriptionConfig
Configuration for the transcription service.
TranscriptionSegment
A transcription segment produced by an AI agent.
TranscriptionText
Represents a segment of transcribed text.
TranslationText
One translated line, delivered with Events.translationText.
VideoEffectsBackground
Background blur: the person stays sharp and everything behind them is blurred.
VideoEffectsConfig
Configuration for the video effects pipeline.
VideoEffectsFilter
A color grade, applied last.
VideoEffectsFraming
Auto-framing: crops and zooms to keep the subject centered. The frame size never changes.
VideoEffectsLighting
Low-light correction: lifts dim areas without blowing out bright ones.
VideoEffectsStyle
A stylized look applied to the whole picture.
VideoSDK
Entry point to the SDK.

Enums

AgentState
Represents the operational state of an AI agent participant.
BitrateMode
Defines the video bitrate optimization mode.
CallType
Which way a phone call that interrupts the room goes. Delivered with Events.externalCallRinging, Events.externalCallAnswered, Events.externalCallRejected and Events.externalCallHangup.
CaptureFlash
Whether Participant.captureImage lights the scene before it grabs the frame.
ConfigLayoutGrid
How participants are arranged in a recording, HLS stream or livestream.
ConfigLayoutPriority
Who a ConfigLayout puts first.
ConfigMode
Whether a recording or HLS stream carries video.
ConfigOrientation
The output orientation of a recording or HLS stream.
ConfigQuality
The output quality of a recording or HLS stream.
ConfigTheme
The visual theme of a recording, HLS stream or livestream.
CustomCameraTrackConfig
Defines video resolution and encoding presets for camera video tracks.
CustomMicrophoneTrackConfig
Defines audio quality presets for microphone audio tracks.
CustomScreenShareTrackConfig
Defines resolution and frame-rate presets for screen sharing.
CustomTrackKind
What a CustomStreamTrack carries.
E2EEState
Outcome of an end-to-end encryption operation on a stream. Only the success states are reported today; the failure states are not yet.
EncodingLayer
The highest simulcast layer a camera track publishes. For a single layer, create the track with multiStream: false.
Events
Every event the SDK emits.
FacingMode
Which way a camera points: FRONT or BACK, the same names the Android and iOS SDKs use.
LeaveReason
Why a participant left the room.
LogLevel
Defines the available logging levels for the SDK.
MaxResolution
The highest video resolution a room works at: HD or SD, the same names the JS, React Native, Android and iOS SDKs use.
MediaType
Mode
Defines the media participation mode of a participant in the room.
Permissions
Defines the media permissions that can be requested by the application.
PinType
Defines the pinning behavior for a participant's media streams.
PreferredProtocol
Transport preference for the media connection.
RealtimeOverflow
What PubSub.subscribe does with live messages that arrive faster than the app takes them.
RelayDecision
How the destination room answered a Room.requestMediaRelay, as delivered with Events.mediaRelayRequestResponse.
RoomState
Connection state of the room.
RTCVideoViewObjectFit
How a RTCVideoView fills the space it is given.
StreamKind
A kind of media, for Room.pauseAllStreams, Room.resumeAllStreams and Room.requestMediaRelay, and as reported by Events.pausedAllStreams and Events.resumedAllStreams.
StreamState
What a RTCStream carries. The health of a remote video or screen-share stream, as Events.streamStateChanged reports it.
TranscriptionState
The states realtime transcription moves through, delivered with Events.transcriptionStateChanged.
TranscriptionType
Whether a TranscriptionText may still change.
TranslationState
Where realtime translation is in its lifecycle, delivered with Events.translationStateChanged.
TranslationType
Whether a TranslationText may still change.
VideoCodec
Video codecs supported for camera tracks.
VideoEffectsBackgroundMode
What VideoEffectsBackground does to the background.
VideoEffectsLut
Which color grade VideoEffectsFilter runs.
VideoEffectsPipeline
Which capture pipeline processes camera frames.
VideoEffectsStylePreset
Which stylized look VideoEffectsStyle runs.
VideoQuality
The quality you receive a participant's video at, or cap your camera at.

Exceptions / Errors

PreCallTestException
Why a pre-call test failed, or why one device check failed — the web SDK's PreCallTestError.
VideoSDKError
A VideoSDK operation that failed, with the same code, name and message the JS, Android and iOS SDKs report.