Overview
TransportParams is the base configuration class for all Pipecat transports. It controls audio input/output settings and video settings. Every transport’s params class (DailyParams, LiveKitParams, SingleClientWebsocketServerParams, etc.) inherits from TransportParams.
You typically pass these via the transport’s params argument:
Audio Output
bool
default:"False"
Enable audio output streaming.
int
default:"None"
Output audio sample rate in Hz. When
None, uses
PipelineParams.audio_out_sample_rate (24000 by default).int
default:"1"
Number of output audio channels.
int
default:"96000"
Output audio bitrate in bits per second. Only
DailyTransport uses it.int
default:"4"
Number of 10ms chunks to buffer before sending output audio. Higher values
increase latency but reduce overhead.
BaseAudioFilter
default:"None"
Audio filter to apply to output audio of the default destination, before the
mixer. Audio the transport generates itself (mixer audio, end silence, DTMF
tones) is not filtered.
float
default:"1.0"
Volume of the output audio, as a multiplier on its samples, applied after the
filter and before the mixer. A
VolumeFrame changes it while the transport
runs, and a VolumeGainFrame adjusts it for some audio.BaseAudioMixer | Mapping[str | None, BaseAudioMixer]
default:"None"
Audio mixer instance for combining audio streams, or a mapping of destination
names to mixer instances. In a mapping, the
None key sets the mixer for the
default destination.List[str]
default:"[]"
List of audio output destination identifiers for routing audio to specific
participants or endpoints.
int
default:"2"
Seconds of silence to send after an
EndFrame. Set to 0 to disable.bool
default:"True"
Insert silence frames when the audio output queue is empty. When
False, the
transport waits for audio data instead of inserting silence, which is useful
for scenarios that require uninterrupted audio playback without artificial
gaps. Only DailyTransport and SmallWebRTCTransport use it.float
default:"10.0"
Maximum time in seconds a single write to the transport may take before the
peer is considered gone. A client that stops reading leaves the write waiting
with nothing to fail, so exceeding this timeout marks the transport as
unusable.
Audio Input
bool
default:"False"
Enable audio input streaming.
int
default:"None"
Input audio sample rate in Hz. When
None, uses
PipelineParams.audio_in_sample_rate (16000 by default).int
default:"1"
Number of input audio channels.
BaseAudioFilter
default:"None"
Audio filter to apply to incoming audio (e.g., noise suppression).
bool
default:"True"
Start audio input streaming immediately when the transport starts. When
False, audio input begins when an InputTransportStartAudioStreamingFrame
reaches the input transport; the RTVI processor pushes one when the client is
ready. Only DailyTransport uses it.bool
default:"True"
Pass input audio frames downstream through the pipeline. When
False, input
audio is not pushed downstream, so processors after the input transport, such
as STT, receive none.Video Output
bool
default:"False"
Enable video output streaming.
bool
default:"False"
Enable real-time video output. When
True, each OutputImageRawFrame is
queued and sent at video_out_framerate. When False, the latest image is
redrawn repeatedly at video_out_framerate.int
default:"1024"
Video output width in pixels.
int
default:"768"
Video output height in pixels.
int | None
default:"None"
deprecated
Deprecated since 1.1.0, removed in 2.0.0. Use provider-specific settings
instead (e.g.,
DailyParams.camera_out_send_settings for Daily).int
default:"30"
Video output frame rate in frames per second.
str
default:"RGB"
Video output color format string.
str
default:"None"
Preferred video codec for output (e.g.,
VP8, H264, H265).List[str]
default:"[]"
List of video output destination identifiers.
Video Input
bool
default:"False"
Enable video input streaming.
dict[str, VideoInSourceParams]
default:"{}"
Video sources to capture from each user as they connect, keyed by source
(
"camera", "screenVideo", or a transport-specific custom source).
DailyTransport captures them from each participant as they join,
SmallWebRTCTransport when the peer connects, and LiveKitTransport when the
participant’s track is subscribed. Sources not listed are captured only when
the application asks, for example with the transport’s
capture_participant_video(). Requires video_in_enabled=True. Other
transports log a warning and ignore it.VideoInSourceParams
Controls how a transport captures one video source from the user.int
default:"30"
Frames per second to pass on from this source. Must be at least 1. Cannot be
set together with
on_request_only=True.bool
default:"False"
Pass on frames only to answer a
UserImageRequestFrame, rather than
continuously at framerate.Capturing video on demand
BaseTransport.capture_participant_video(participant_id, framerate=30, video_source="camera", *, on_request_only=False) captures a user’s video source on demand and takes precedence over video_in_sources for that source. It is implemented by DailyTransport, SmallWebRTCTransport and LiveKitTransport. Other transports, including TavusTransport and LemonSliceTransport, log a warning. A framerate of None passes on every frame, and on_request_only=True passes on only the frames that answer image requests. Passing framerate=0 is deprecated since 1.13.0; use on_request_only=True.
BaseTransport.get_client_id(client) returns the participant_id for the client passed to on_client_connected: the participant id on Daily, the participant identity on LiveKit, the peer connection id on SmallWebRTC and the stream id on Vonage. Other transports log a warning and return an empty string.
SmallWebRTCTransport, calling capture_participant_video() without a participant_id is deprecated since 1.13.0.
Transport Subclasses
Each transport extendsTransportParams with provider-specific fields: