Skip to main content

Media

Capture and manage audio/video.

Getting Media

Use QuickRTCStatic.getLocalMedia() to capture media:

// Audio + Video
final media = await QuickRTCStatic.getLocalMedia(
MediaConfig.audioVideo(),
);

// Audio only
final media = await QuickRTCStatic.getLocalMedia(
MediaConfig.audioOnly(),
);

// Video only
final media = await QuickRTCStatic.getLocalMedia(
MediaConfig.videoOnly(),
);

// Screen share
final media = await QuickRTCStatic.getLocalMedia(
MediaConfig.screenShareOnly(),
);

Publishing Media

Publish captured media to the meeting:

await controller.produce(
ProduceInput.fromTracksWithTypes(media.tracksWithTypes),
);

Video Config

// Presets
VideoConfig.frontCamera // 720p, front camera
VideoConfig.backCamera // 720p, back camera
VideoConfig.hd // 1280x720
VideoConfig.fullHd // 1920x1080

// Custom
MediaConfig.videoOnly(
config: VideoConfig(
width: 1280,
height: 720,
frameRate: 30,
facingMode: 'user', // 'user' = front, 'environment' = back
),
)

Audio Config

MediaConfig.audioOnly(
config: AudioConfig(
echoCancellation: true,
noiseSuppression: true,
autoGainControl: true,
),
)

Screen Share Config

ScreenShareConfig.defaultConfig  // 1080p, 30fps
ScreenShareConfig.highQuality // 1080p, 60fps

// Custom
MediaConfig.screenShareOnly(
config: ScreenShareConfig(
width: 1920,
height: 1080,
frameRate: 60,
),
)

Device Enumeration

// Get available devices
final cameras = await QuickRTCStatic.getVideoInputDevices();
final mics = await QuickRTCStatic.getAudioInputDevices();
final speakers = await QuickRTCStatic.getAudioOutputDevices();

// Switch camera (mobile)
await QuickRTCStatic.switchCamera(currentTrack);

LocalMedia Properties

After calling getLocalMedia():

media.stream            // MediaStream
media.audioTrack // MediaStreamTrack?
media.videoTrack // MediaStreamTrack?
media.screenshareTrack // MediaStreamTrack?
media.tracksWithTypes // List<TrackWithType> for produce()

Disposing Media

// Dispose when done
await media.dispose();

// Or dispose streams directly
media.stream.dispose();