router-for-me/CLIProxyAPI · error

register Opus codec: %w

Error message

register Opus codec: %w

What it means

Error "register Opus codec: %w" thrown in router-for-me/CLIProxyAPI.

Source

Thrown at internal/client/codex/live/media.go:216

	}
	l.mu.Unlock()
}

func newPionAPI(relayConfig config.CodexLiveMediaRelayConfig, filterPrivateRemoteIPs bool) (*webrtc.API, error) {
	return newPionAPIWithOptions(relayConfig, filterPrivateRemoteIPs, false)
}

func newPionProxyAPI(relayConfig config.CodexLiveMediaRelayConfig) (*webrtc.API, error) {
	return newPionAPIWithOptions(relayConfig, false, true)
}

func newPionAPIWithOptions(relayConfig config.CodexLiveMediaRelayConfig, filterPrivateRemoteIPs, loopbackOnly bool) (*webrtc.API, error) {
	mediaEngine := &webrtc.MediaEngine{}
	if errRegister := mediaEngine.RegisterCodec(webrtc.RTPCodecParameters{
		RTPCodecCapability: opusCodec,
		PayloadType:        111,
	}, webrtc.RTPCodecTypeAudio); errRegister != nil {
		return nil, fmt.Errorf("register Opus codec: %w", errRegister)
	}
	interceptorRegistry := &interceptor.Registry{}
	if errRegister := webrtc.RegisterDefaultInterceptors(mediaEngine, interceptorRegistry); errRegister != nil {
		return nil, fmt.Errorf("register WebRTC interceptors: %w", errRegister)
	}
	settingEngine := webrtc.SettingEngine{}
	if !loopbackOnly {
		if relayConfig.UDPPortMin != 0 {
			if errPorts := settingEngine.SetEphemeralUDPPortRange(relayConfig.UDPPortMin, relayConfig.UDPPortMax); errPorts != nil {
				return nil, fmt.Errorf("configure WebRTC UDP port range: %w", errPorts)
			}
		}
		if publicIP := strings.TrimSpace(relayConfig.PublicIP); publicIP != "" {
			settingEngine.SetNAT1To1IPs([]string{publicIP}, webrtc.ICECandidateTypeHost)
		}
	}
	if filterPrivateRemoteIPs {
		settingEngine.SetRemoteIPFilter(isPublicRemoteIP)

View on GitHub (pinned to 78f0c4079e)

Solutions

  1. Verify the Opus codec dependency is available and compatible.
  2. Check the wrapped registration error from the media engine.

When it happens

Trigger: Thrown at internal/client/codex/live/media.go:216 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15). Data as JSON: /api/errors/cac04d38310bcf1a. Report an issue: GitHub.