pub struct RtcConfiguration {Show 52 fields
pub ice_servers: Vec<IceServer>,
pub ice_transport_policy: IceTransportPolicy,
pub bundle_policy: BundlePolicy,
pub rtcp_mux_policy: RtcpMuxPolicy,
pub certificates: Vec<CertificateConfig>,
pub transport_mode: TransportMode,
pub nack_buffer_size: usize,
pub media_capabilities: Option<MediaCapabilities>,
pub external_ip: Option<String>,
pub external_port: Option<u16>,
pub bind_ip: Option<String>,
pub disable_ipv6: bool,
pub ssrc_start: u32,
pub stun_timeout: Duration,
pub nomination_timeout: Duration,
pub ice_connection_timeout: Duration,
pub ice_disconnect_threshold: Duration,
pub ice_disconnect_grace: Duration,
pub sctp_rto_initial: Duration,
pub sctp_rto_min: Duration,
pub sctp_rto_max: Duration,
pub sctp_max_association_retransmits: u32,
pub sctp_receive_window: usize,
pub sctp_heartbeat_interval: Duration,
pub sctp_max_heartbeat_failures: u32,
pub sctp_max_tsn_retransmits: u32,
pub sctp_max_burst: usize,
pub sctp_max_cwnd: usize,
pub dtls_buffer_size: usize,
pub rtp_start_port: Option<u16>,
pub rtp_end_port: Option<u16>,
pub ice_gather_udp_hosts: bool,
pub tcp_port_range_start: Option<u16>,
pub tcp_port_range_end: Option<u16>,
pub enable_latching: bool,
pub probation_max_packets: Option<u8>,
pub enable_ice_lite: bool,
pub prefer_srflx_over_natted_host: bool,
pub enable_upnp: bool,
pub upnp_lease_duration: u32,
pub upnp_discovery_timeout: Duration,
pub depacketizer_strategy: DepacketizerStrategy,
pub rtp_buffer_capacity: usize,
pub buffer_drop_strategy: BufferDropStrategy,
pub buffer_stats_log_interval: Duration,
pub ice_tcp_policy: IceTcpPolicy,
pub ice_udp_mux: bool,
pub ice_udp_mux_port: Option<u16>,
pub sdp_compatibility: SdpCompatibilityMode,
pub label: Option<String>,
pub cname: Option<String>,
pub recorder_interceptors: RecorderInterceptors,
}Expand description
Primary configuration for a PeerConnection.
Fields§
§ice_servers: Vec<IceServer>§ice_transport_policy: IceTransportPolicy§bundle_policy: BundlePolicy§rtcp_mux_policy: RtcpMuxPolicy§certificates: Vec<CertificateConfig>§transport_mode: TransportMode§nack_buffer_size: usize§media_capabilities: Option<MediaCapabilities>§external_ip: Option<String>Override the advertised IP address in SDP (for NAT traversal).
When set, the c=, o=, and candidate addresses in the SDP will
use this IP instead of the local bind IP. The local bind address is
stored in related_address on the candidate.
external_port: Option<u16>Override the advertised port in SDP m= line and candidates
(for NAT port forwarding).
When set, the SDP will advertise this port instead of the local bind port. This is useful when you have configured NAT port forwarding (e.g. external port 30000 → local port 20000) and need the remote peer to send RTP to the external port.
Works independently or combined with external_ip.
Only applies in RTP/SRTP direct mode (TransportMode::Rtp /
TransportMode::Srtp). Not used in WebRTC mode.
bind_ip: Option<String>§disable_ipv6: bool§ssrc_start: u32§stun_timeout: Duration§nomination_timeout: DurationTimeout for the ICE nomination binding check (USE-CANDIDATE).
This should be larger than stun_timeout to allow more retransmissions
and reduce the probability of nomination failures under packet loss.
ice_connection_timeout: Duration§ice_disconnect_threshold: DurationHow long without receiving any packet (STUN/DTLS/SCTP) before the ICE
transport is demoted from Connected to Disconnected.
Disconnected is a recoverable state — the SCTP association is not
torn down (see peer_connection.rs); the transport waits for traffic to
resume. Keep this comfortably below ice_connection_timeout, which is
the hard, non-recoverable failure threshold.
Default: 5s (standard heuristic). Raise it (e.g. 120s) for long-lived tunnels (SSH/port-forwarding) over lossy links where brief blackouts are expected and must not even flap the SCTP association.
ice_disconnect_grace: DurationHow long to wait in Disconnected state before tearing down the
PeerConnection (SCTP/DTLS). When ICE goes Disconnected the transport
is given this long to recover before the connection is closed.
This is distinct from ice_connection_timeout which operates at the
ICE transport layer. This grace period gives the application a chance
to observe PeerConnectionState::Disconnected and react, while still
bounding how long a dead connection lingers.
Set to 0 to tear down immediately on ICE Disconnected. Default: 15s
sctp_rto_initial: Duration§sctp_rto_min: Duration§sctp_rto_max: Duration§sctp_max_association_retransmits: u32§sctp_receive_window: usize§sctp_heartbeat_interval: Duration§sctp_max_heartbeat_failures: u32§sctp_max_tsn_retransmits: u32§sctp_max_burst: usize§sctp_max_cwnd: usize§dtls_buffer_size: usize§rtp_start_port: Option<u16>§rtp_end_port: Option<u16>§ice_gather_udp_hosts: bool§tcp_port_range_start: Option<u16>§tcp_port_range_end: Option<u16>§enable_latching: bool§probation_max_packets: Option<u8>§enable_ice_lite: bool§prefer_srflx_over_natted_host: boolWhen true, demote host candidates with private (RFC 1918) local IPs below server-reflexive candidates in the connectivity check ordering. This avoids DTLS handshake failures behind NATs where a host candidate can pass a single STUN binding check but cannot sustain bidirectional DTLS traffic. Same-LAN pairs (both sides private) are not affected. Default: false (standard RFC 5245 behavior).
enable_upnp: boolEnable UPnP IGD for automatic port mapping
upnp_lease_duration: u32UPnP port mapping lease duration in seconds
upnp_discovery_timeout: DurationUPnP gateway discovery timeout
depacketizer_strategy: DepacketizerStrategy§rtp_buffer_capacity: usize§buffer_drop_strategy: BufferDropStrategy§buffer_stats_log_interval: Duration§ice_tcp_policy: IceTcpPolicyControls ICE TCP candidate support (RFC 6544). Default: Disabled — only UDP candidates are gathered and used.
ice_udp_mux: boolEnable process-wide shared ICE UDP socket (single-port multiplexing).
When true, multiple PeerConnections share one UdpSocket bound to
ice_udp_mux_port. Incoming UDP packets are demultiplexed by the server
ufrag embedded in the first STUN Binding Request’s USERNAME attribute,
and — once a pair is established — by the remote source address.
Requires ice_udp_mux_port to be set. Useful for SFU/WHEP deployments
that need to advertise a single public UDP port for many sessions.
ice_udp_mux_port: Option<u16>UDP port to bind the shared mux socket on. Required when ice_udp_mux
is enabled. All PeerConnections sharing this port must agree on it.
sdp_compatibility: SdpCompatibilityModeSDP generation compatibility mode.
label: Option<String>§cname: Option<String>§recorder_interceptors: RecorderInterceptorsRecording / tapping interceptors installed on every transceiver created by this PC. Receiver interceptors fire on incoming RTP (pre-depacketize); sender interceptors fire on outgoing RTP (post seq/timestamp rewrite, pre-wire).
Trait Implementations§
Source§impl Clone for RtcConfiguration
impl Clone for RtcConfiguration
Source§fn clone(&self) -> RtcConfiguration
fn clone(&self) -> RtcConfiguration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RtcConfiguration
impl Debug for RtcConfiguration
Source§impl Default for RtcConfiguration
impl Default for RtcConfiguration
Source§impl<'de> Deserialize<'de> for RtcConfiguration
impl<'de> Deserialize<'de> for RtcConfiguration
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for RtcConfiguration
Source§impl From<RtcConfigurationBuilder> for RtcConfiguration
impl From<RtcConfigurationBuilder> for RtcConfiguration
Source§fn from(builder: RtcConfigurationBuilder) -> Self
fn from(builder: RtcConfigurationBuilder) -> Self
Source§impl PartialEq for RtcConfiguration
impl PartialEq for RtcConfiguration
Source§impl Serialize for RtcConfiguration
impl Serialize for RtcConfiguration
impl StructuralPartialEq for RtcConfiguration
Auto Trait Implementations§
impl !RefUnwindSafe for RtcConfiguration
impl !UnwindSafe for RtcConfiguration
impl Freeze for RtcConfiguration
impl Send for RtcConfiguration
impl Sync for RtcConfiguration
impl Unpin for RtcConfiguration
impl UnsafeUnpin for RtcConfiguration
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.