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
KeyProviderBaseused 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
nulltakes 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
nulltakes the server's default. - HLSUrl
- The URLs of a running HLS stream, from Events.hlsStateChanged.
- LivestreamConfig
-
Options for Room.startLivestream. A field left
nulltakes 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
networkQualityand theonStatsChange(stats)payload. - PreCallTestOptions
-
Options for VideoSDK.runPreCallTest — the web SDK's
runPreCallTestoptions, lessonStatsChange, 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
nulltakes 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
nulltakes 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.
- 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,nameandmessagethe JS, Android and iOS SDKs report.