env('LIVE_API_URL', 'http://127.0.0.1:9997'), /* |-------------------------------------------------------------------------- | ICE |-------------------------------------------------------------------------- | | STUN lets a browser discover its public address. TURN relays the media | when a direct path cannot be established — which, until a UDP port is | forwarded to this server, is EVERY broadcaster outside the local network. | | With no TURN configured, publishing works from the LAN only. | */ 'stun_url' => env('LIVE_STUN_URL', 'stun:stun.l.google.com:19302'), 'turn_url' => env('LIVE_TURN_URL'), 'turn_username' => env('LIVE_TURN_USERNAME'), 'turn_credential' => env('LIVE_TURN_CREDENTIAL'), /* |-------------------------------------------------------------------------- | Capture defaults |-------------------------------------------------------------------------- | | The target the phone is ASKED for. A camera that cannot do 1080p returns | the closest it can, and WebRTC's congestion control lowers the bitrate | when the uplink cannot sustain it — so this is a ceiling, not a promise. | */ 'video_width' => (int) env('LIVE_VIDEO_WIDTH', 1920), 'video_height' => (int) env('LIVE_VIDEO_HEIGHT', 1080), 'video_fps' => (int) env('LIVE_VIDEO_FPS', 30), // ~4.5 Mbit/s is the practical ceiling for 1080p30 over a mobile uplink. 'max_bitrate' => (int) env('LIVE_MAX_BITRATE', 4_500_000), ];