Skip to main content
Configuration options for publishing audio and video tracks to the room.

AudioPublishOptions

Options for publishing audio tracks.

Properties

name
String?
default:"nil"
Custom name for the audio track.
encoding
AudioEncoding?
default:"nil"
Preferred encoding parameters for the audio track.
dtx
Bool
default:"true"
Enable Discontinuous Transmission (DTX) for audio. When enabled, audio packets are not sent during silence, reducing bandwidth usage.
red
Bool
default:"true"
Enable Redundant Encoding (RED) for audio to improve reliability.
streamName
String?
default:"nil"
Custom stream name for the audio track.
preConnect
Bool
default:"false"
Enable pre-connection buffering for the audio track.

Usage

let audioOptions = AudioPublishOptions(
    encoding: .presetSpeech,
    dtx: true,
    red: true
)

let track = LocalAudioTrack.createTrack()
try await room.localParticipant.publish(audioTrack: track, publishOptions: audioOptions)

VideoPublishOptions

Options for publishing video tracks.

Properties

name
String?
default:"nil"
Custom name for the video track.
encoding
VideoEncoding?
default:"nil"
Preferred encoding parameters for the video track.
screenShareEncoding
VideoEncoding?
default:"nil"
Encoding parameters specifically for screen share.
simulcast
Bool
default:"true"
Enable simulcasting, which publishes three tracks at different sizes for adaptive streaming.
simulcastLayers
[VideoParameters]
default:"[]"
Custom simulcast layer configuration.
screenShareSimulcastLayers
[VideoParameters]
default:"[]"
Custom simulcast layers for screen share.
preferredCodec
VideoCodec?
default:"nil"
Preferred video codec for encoding.
preferredBackupCodec
VideoCodec?
default:"nil"
Preferred backup codec for encoding.
degradationPreference
DegradationPreference
default:".auto"
Controls how the encoder should degrade quality when bandwidth is limited.
streamName
String?
default:"nil"
Custom stream name for the video track.

Usage

let videoOptions = VideoPublishOptions(
    encoding: VideoEncoding(maxBitrate: 3_000_000, maxFps: 30),
    simulcast: true,
    preferredCodec: .vp9
)

let track = LocalVideoTrack.createCameraTrack()
try await room.localParticipant.publish(videoTrack: track, publishOptions: videoOptions)

Build docs developers (and LLMs) love