WebRTC

Configuration

Config structs, YAML examples, and option helpers for WebRTC

YAML Configuration Example

config.yaml
extensions:
  webrtc:
    signalingEnabled: true
    signalingTimeout: "30s"
    topology: "mesh"                 # "mesh" or "sfu"

    stunServers:
      - "stun:stun.l.google.com:19302"
      - "stun:stun1.l.google.com:19302"

    turnServers:
      - url: "turn:turn.example.com:3478"
        username: "user"
        password: "pass"

    media:
      audioEnabled: true
      audioCodecs: ["opus"]
      videoEnabled: true
      videoCodecs: ["VP8", "H264"]
      maxAudioBitrate: 128           # kbps
      maxVideoBitrate: 2500          # kbps
      minVideoBitrate: 150           # kbps
      maxWidth: 1920
      maxHeight: 1080
      maxFPS: 30

    quality:
      monitorEnabled: true
      monitorInterval: "5s"
      maxPacketLoss: 5.0             # percent
      maxJitter: "30ms"
      minBitrate: 100                # kbps
      adaptiveQuality: true
      qualityCheckInterval: "10s"

    recordingEnabled: false
    recordingPath: ""
    requireAuth: true
    allowGuests: false

Programmatic Configuration

webrtcExt, err := webrtc.New(streamingExt, webrtc.Config{},
    webrtc.WithTopology("sfu"),
    webrtc.WithSTUNServers("stun:stun.l.google.com:19302"),
    webrtc.WithTURNServer("turn:turn.example.com:3478", "user", "pass"),
    webrtc.WithVideoCodecs("VP8", "H264"),
    webrtc.WithQualityMonitoring(true, 5*time.Second),
)

Config Struct Reference

Config

FieldTypeDefaultDescription
SignalingEnabledbooltrueEnable WebSocket signaling
SignalingTimeouttime.Duration30sSignaling response timeout
TopologyTopology"mesh"Call topology: "mesh" or "sfu"
STUNServers[]stringGoogle STUN serversSTUN server URLs
TURNServers[]TURNConfig[]TURN server configurations
MediaConfigSee belowAudio/video settings
QualityConfigSee belowQuality monitoring settings
RecordingEnabledboolfalseEnable call recording
RecordingPathstring""Recording output directory
RequireAuthbooltrueRequire authentication to join
AllowGuestsboolfalseAllow unauthenticated guests

MediaConfig

FieldTypeDefaultDescription
AudioEnabledbooltrueEnable audio
AudioCodecs[]string["opus"]Audio codecs
VideoEnabledbooltrueEnable video
VideoCodecs[]string["VP8", "H264"]Video codecs
MaxAudioBitrateint128Max audio bitrate (kbps)
MaxVideoBitrateint2500Max video bitrate (kbps)
MinVideoBitrateint150Min video bitrate (kbps)
MaxWidthint1920Max video width
MaxHeightint1080Max video height
MaxFPSint30Max frame rate

QualityConfig

FieldTypeDefaultDescription
MonitorEnabledbooltrueEnable quality monitoring
MonitorIntervaltime.Duration5sStats collection interval
MaxPacketLossfloat645.0Max acceptable packet loss (%)
MaxJittertime.Duration30msMax acceptable jitter
MinBitrateint100Min acceptable bitrate (kbps)
AdaptiveQualitybooltrueAuto-adjust quality
QualityCheckIntervaltime.Duration10sQuality assessment interval

Option Helpers

FunctionDescription
WithTopology(topology)Set call topology ("mesh" or "sfu")
WithSTUNServers(servers...)Set STUN server URLs
WithTURNServer(url, username, password)Add a TURN server
WithAudioCodecs(codecs...)Set audio codecs
WithVideoCodecs(codecs...)Set video codecs
WithSFU(config)Set SFU-specific configuration
WithRecording(enabled, path)Toggle recording
WithQualityMonitoring(enabled, interval)Toggle quality monitoring

How is this guide?

On this page