sip-rtp-server

command
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 8, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

SIP RTP media server — runs separately from the signaling server.

Exposes an HTTP control API; the signaling server allocates legs on INVITE and activates them on ACK.

Usage:

# Terminal A: RTP media plane
RTP_MEDIA_IP=192.168.28.128 RTP_CONTROL_PORT=8090 go run ./examples/sip-rtp-server

# Terminal B: SIP signaling (RTP nodes register here)
SIP_CONTROL_PORT=8080 go run ./examples/sip-signaling-server

# Terminal C: second RTP node on the same host (must use a different control port)
RTP_NODE_ID=rtp-b RTP_CONTROL_PORT=8091 RTP_MEDIA_IP=192.168.28.129 \
  SIP_REGISTRY_URL=http://192.168.28.128:8080 go run ./examples/sip-rtp-server

On one machine, each RTP instance needs a unique RTP_CONTROL_PORT (8090, 8091, …) or set RTP_CONTROL_PORT=0 to let the OS pick a free port.

Env:

  • SIP_REGISTRY_URL signaling registry base URL (required for multi-node)
  • RTP_NODE_ID node id (default rtp-<bound-port>)
  • RTP_CONTROL_PUBLIC_URL control URL advertised to signaling (default http://<media_ip>:<port>)
  • RTP_UDP_HOST UDP bind host (default 0.0.0.0)
  • RTP_MEDIA_IP IP advertised in SDP c= line (auto-detect if empty)
  • RTP_CONTROL_HOST HTTP bind host (default 0.0.0.0)
  • RTP_CONTROL_PORT HTTP control port (default 8090; 0 = auto)
  • RTP_MAX_LEGS max concurrent legs (0 = unlimited)

Realtime AI (optional — replaces silence demo when configured):

export REALTIME_CONFIG_JSON='{"provider":"aliyun_omni","api_key":"sk-...","model":"qwen3.5-omni-flash-realtime-2026-03-15"}'
export REALTIME_VOICE=Cherry

Volcengine:

export REALTIME_CONFIG_JSON='{"provider":"volcengine_dialogue","appId":"...","accessKey":"..."}'

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL